在C++中的Foreach循环相当于C#

Swa*_*pta 68 c# c++

我如何将此代码转换为C++?

string[] strarr = {"ram","mohan","sita"};    
foreach(string str in strarr) {
  listbox.items.add(str);
}
Run Code Online (Sandbox Code Playgroud)

mis*_*tor 114

范围基于:

std::array<std::string, 3> strarr = {"ram", "mohan", "sita"};
for(const std::string& str : strarr) {
  listbox.items.add(str);
}
Run Code Online (Sandbox Code Playgroud)

前c ++ 11

std::string strarr[] = {"ram", "mohan", "sita"};
for(int i = 0; i < 3; ++i) {
  listbox.items.add(strarr[i]);
}
Run Code Online (Sandbox Code Playgroud)

要么

std::string strarr[] = {"ram", "mohan", "sita"};
std::vector<std::string> strvec(strarr, strarr + 3);
std::vector<std::string>::iterator itr = strvec.begin();
while(itr != strvec.end()) {
  listbox.items.add(*itr);
  ++itr;
}
Run Code Online (Sandbox Code Playgroud)

使用Boost:

boost::array<std::string, 3> strarr = {"ram", "mohan", "sita"};
BOOST_FOREACH(std::string & str, strarr) {
  listbox.items.add(str);
}
Run Code Online (Sandbox Code Playgroud)

  • 那么std :: for_each呢? (5认同)
  • @ronag:接受的答案[这里](http://stackoverflow.com/questions/2047414/advantages-of-stdfor-each-over-for-loop)反映了我对`std :: for_each`的看法. (3认同)
  • 在第一个代码示例中,关于数组的大小如:for(int i = 0; i <sizeof(strarr)/ sizeof(strarr [0]); i ++)` (2认同)

Art*_*yom 25

在C++ 0x中你有

for(string str: strarr) { ... }
Run Code Online (Sandbox Code Playgroud)

但直到那时使用普通的循环.


Tha*_*mer 12

在习惯了varC#中的关键字之后,我开始auto在C++ 11中使用关键字.它们都通过推理确定类型,并且在您只希望编译器为您确定类型时非常有用.这是代码的C++ 11端口:

#include <array>
#include <string>

using namespace std;

array<string, 3> strarr = {"ram", "mohan", "sita"};
for(auto str: strarr) {
  listbox.items.add(str);
}
Run Code Online (Sandbox Code Playgroud)


小智 5

Boost有一个宏,可以为你做到这一点.

http://www.boost.org/doc/libs/1_44_0/doc/html/foreach.html


And*_*rsK 5

只是为了好玩(新的lambda函数):

      static std::list<string> some_list;

      vector<string> s; 
      s.push_back("a");
      s.push_back("b");
      s.push_back("c");

      for_each( s.begin(), s.end(), [=](string str) 
        {
          some_list.push_back(str);
        }

  );

  for_each( some_list.begin(), some_list.end(), [](string ss) { cout << ss; } );
Run Code Online (Sandbox Code Playgroud)

虽然建议做一个简单的循环:-)


EMP*_*EMP 0

如果你有一个数组,你可以简单地使用for循环。(抱歉,我不会for为您输入循环代码。)