自学内容网 自学内容网

c++ * 与迭代器

*运算符在C++中有两个主要的用途:

  1. 解引用指针:当*运算符用于指针时,它被称为解引用运算符。它用于访问指针所指向的值。例如:
    int a = 5;
    int *p = &a;
    std::cout << *p << std::endl; // 输出5

在这个例子中,p用于访问指针p所指向的整数值。
2. 获取迭代器所指向的元素:当
运算符用于迭代器时,它用于获取迭代器所指向的元素。例如:
std::vector v = {1, 2, 3, 4, 5};
std::vector::iterator it = v.begin();
std::cout << *it << std::endl; // 输出1

在这个例子中,it用于获取迭代器it所指向的元素。
在我们的示例中,it是一个std::sregex_iterator,它是一种迭代器,用于遍历正则表达式匹配的结果。当我们使用
运算符来解引用it时,我们实际上是获取了迭代器所指向的std::match_results<>对象。
*运算符在C++中有两个主要的用途:

  1. 解引用指针:当*运算符用于指针时,它被称为解引用运算符。它用于访问指针所指向的值。例如:
    int a = 5;
    int *p = &a;
    std::cout << *p << std::endl; // 输出5

在这个例子中,p用于访问指针p所指向的整数值。
2. 获取迭代器所指向的元素:当
运算符用于迭代器时,它用于获取迭代器所指向的元素。例如:
std::vector v = {1, 2, 3, 4, 5};
std::vector::iterator it = v.begin();
std::cout << *it << std::endl; // 输出1

在这个例子中,it用于获取迭代器it所指向的元素。
在我们的示例中,it是一个std::sregex_iterator,它是一种迭代器,用于遍历正则表达式匹配的结果。当我们使用
运算符来解引用it时,我们实际上是获取了迭代器所指向的std::match_results<>对象。

在C++中,可以通过定义一个类来自定义迭代器。以下是一个简单的示例,演示如何定义一个自定义迭代器:
#include
class MyIterator {
private:
int *ptr;
public:
MyIterator(int p) : ptr§ {}
int operator
() {
return *ptr;
}
MyIterator& operator++() {
++ptr;
return *this;
}
bool operator!=(const MyIterator& other) {
return ptr != other.ptr;
}
};
int main() {
int arr[] = {1, 2, 3, 4, 5};
for (MyIterator it = MyIterator(arr); it != MyIterator(arr + 5); ++it) {
std::cout << *it << std::endl;
}
return 0;
}

在这个示例中,我们定义了一个名为MyIterator的类,它包含一个指向整数的指针。我们为这个类定义了以下操作符:

  • operator*():返回指针所指向的值。
  • operator++():将指针向前移动一个位置,并返回自身的引用。
  • operator!=():比较两个MyIterator对象是否指向不同的位置。
    然后,我们在main函数中使用MyIterator来遍历一个整数数组,并输出每个元素的值。
    可以根据需要修改MyIterator的实现,以适应不同的迭代需求。

原文地址:https://blog.csdn.net/heeheeai/article/details/140622437

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!