21xrx.com
2024-11-22 07:37:50 Friday
登录
文章检索 我的文章 写文章
C++11的range-based for循环
2023-07-08 20:48:31 深夜i     --     --
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循环提供了一种便捷的、易于阅读的方式来遍历容器、数组等数据结构,它使得代码更加简洁、易于理解,并且避免了一些常见的错误,例如数组越界等。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复