c++用于循环不同的方式

c++ for loop different way

本文关键字:方式 用于 循环 c++      更新时间:2023-10-16

最近,我找到了一种从std::partition_point输出向量的漂亮方法。

  std::cout << "odd:";
  for (int& x:odd) std::cout << ' ' << x;
  std::cout << 'n';

有人能简要描述一下它是如何工作的以及为什么工作的吗?如果有人能在文档中找到for循环的用法,我将不胜感激,不幸的是,我没有在http://www.cplusplus.com/.

这是C++的一个基于范围的循环:指定一个循环变量和一个容器,编译器生成迭代容器的代码,并在执行循环体之前依次为容器的每个项分配循环变量。这个循环结构在C++11之前是不可用的。

请注意,有一种方法可以在不使用循环的情况下输出容器:

std::ostream_iterator<int> out_it (std::cout, " ");
std::copy( odd.begin(), odd.end(), out_it );

我认为您可能对boost::foreach实现感兴趣:http://www.boost.org/doc/libs/1_54_0/doc/html/foreach.html.这并不完全是循环标准的实现,但您可以调试和研究foreach.hpp文件。下面我附上你可能感兴趣的例子:

#include <string>
#include <iostream>
#include <boost/foreach.hpp>
int main()
{
   std::string hello( "Hello, world!" );
   BOOST_FOREACH( char ch, hello )
   {
     std::cout << ch;
   }
   return 0;
}