21xrx.com
2025-03-21 20:47:47 Friday
文章检索 我的文章 写文章
C++11的range-based for循环
2023-07-08 20:48:31 深夜i     33     0
C++11 range-based for循环 迭代器 范围遍历

C++11是C++的一个新版本,它引入了许多新的特性,其中之一就是range-based for循环。这个新的循环结构可以非常方便地遍历容器中的元素,同时也可以遍历数组、字符串、指针和任意可迭代对象。

传统的for循环需要指定起始位置和结束位置,而range-based for循环则直接使用容器或者数组本身来确定循环的范围。例如,对于一个vector容器,我们可以用如下的代码来遍历其中的元素:

std::vector<int> vec = 1;
for (const auto& value : vec)
  std::cout << value << std::endl;

上面这段代码中,const auto&表示获取vector中每个元素的引用,这样可以避免不必要的复制操作。value是遍历过程中当前元素的引用,我们可以直接对value进行操作,例如输出到标准输出流中。

对于数组,range-based for循环也能很好地处理:

int arr[] = 1;
for (const auto& value : arr)
  std::cout << value << std::endl;

当我们需要对一个容器或者数组中的元素进行修改时,可以使用auto&来代替const auto&,这样每个元素就可以被修改了。

range-based for循环还支持迭代器和指针。例如,我们可以使用常规for循环来遍历一个指针数组:

int* arr[] = {new int(1), new int(2), new int(3)};
for (int i = 0; i < 3; i++) {
  std::cout << *(arr[i]) << std::endl;
}

但是使用range-based for循环可以让代码更加简洁:

int* arr[] = {new int(1), new int(2), new int(3)};
for (int* value : arr) {
  std::cout << *value << std::endl;
}

总之,C++11中的range-based for循环提供了一种便捷的、易于阅读的方式来遍历容器、数组等数据结构,它使得代码更加简洁、易于理解,并且避免了一些常见的错误,例如数组越界等。

  
  

评论区

请求出错了