C++ 是否有php的等价物;foreach“;在c++;排列

C++ 是否有php的等价物;foreach“;在c++;排列,c++,foreach,C++,Foreach,正如在标题中,是否有任何类型的“foreach”等价于数组,或者仅仅是向量? 我已经问过一位计算机科学教授,他只回答了更复杂的结构,我们在课程中不会看到这些结构。在c++11和c++14中有 string[] strarr = {"one","two","three"}; for(string str: strarr) { //do stuff } 但除此之外没有。在c++11和c++14中,您必须使用迭代器或普通for循环 string[] strarr = {"one","tw

正如在标题中,是否有任何类型的“foreach”等价于数组,或者仅仅是向量?
我已经问过一位计算机科学教授,他只回答了更复杂的结构,我们在课程中不会看到这些结构。

在c++11和c++14中有

string[] strarr = {"one","two","three"}; 
for(string str: strarr) 
{
    //do stuff
}

但除此之外没有。在c++11和c++14中,您必须使用
迭代器
或普通
for循环

string[] strarr = {"one","two","three"}; 
for(string str: strarr) 
{
    //do stuff
}

但除此之外,不可以。您必须对循环使用
迭代器
或普通的
是的,您可以对每个使用类似
的算法,或对循环使用基于范围的算法,以及数组和任何其他容器:

int a[] = {1,2,3,4,5};

for_each(begin(a), end(a), [](int x){cout << x;});
for (int x : a) cout << x;
inta[]={1,2,3,4,5};

对于每个_(begin(a)、end(a),[](int x){coutYes,您可以对每个_
使用类似于
的算法,或基于范围的循环、数组以及任何其他容器:

int a[] = {1,2,3,4,5};

for_each(begin(a), end(a), [](int x){cout << x;});
for (int x : a) cout << x;
inta[]={1,2,3,4,5};

对于每个(开始(a),结束(a),[](int x){cout你的教授是错的

int array[] = {0, 1, 2, 3};
for (int& x : array)
   x *= 2;

// Array now looks like:
//  {0, 2, 4, 6}

你的教授错了

int array[] = {0, 1, 2, 3};
for (int& x : array)
   x *= 2;

// Array now looks like:
//  {0, 2, 4, 6}
()使用向量示例或。为了准确回答这个问题,我可以告诉你使用是的,在C++11中这是可能的,但是你应该更好地使用

//使用时,它只是您所知道的C数组的包装器

std::array<int, 3> a3 = {1, 2, 3};
std::数组a3={1,2,3};
然后像这样迭代:

for(const auto& s: a3)
   std::cout << s << ' ';
for(const auto&s:a3)
std::cout使用向量示例或。为了准确回答这个问题,我可以告诉您使用是的,在C++11中这是可能的,但是您应该更好地使用

//使用时,它只是您所知道的C数组的包装器

std::array<int, 3> a3 = {1, 2, 3};
std::数组a3={1,2,3};
然后像这样迭代:

for(const auto& s: a3)
   std::cout << s << ' ';
for(const auto&s:a3)

std::cout@timrau:Ermmmm不是真的?!我提出的作为复制品的问题确实是这个问题的答案。@timrau:不是真的,不。是的,它或多或少是一样的;我的更一般…@timrau:Ermmmm不是真的?!我提出的作为复制品的问题确实是这个问题的答案。@timrau:不是真的,不。是的,它是mor差不多;我的更一般……我不会说他错了,只是过时了。学校总是在边缘之后几年/几十年。@qub1n:这让他在写作时错了。如果他在五年前提出这个主张,他可能是对的(不管怎样,模
BOOST\u FOREACH
)但这不是可操作的场景。我不妨告诉你,C++还没有被发明出来;你会说我没有错?不,因为如果没有发明,你就不知道它被称为C++,因此你错了:不要把它看得太合乎逻辑,称他为过时而非错误是对教授的一种尊重。@qub1n:如果他真的知道自己的技能,而不是向手无寸铁的学生传播错误信息,我会更尊重他。我不会说他错了,只是过时了。学校总是落后于边缘几年/几十年。@qub1n:那是在写这篇文章的时候,他错了。如果他五年前提出这一主张,他可能是对的(不管怎样,modulo
BOOST\u FOREACH
)但这不是可操作的场景。我不妨告诉你,C++还没有被发明出来;你会说我没有错?不,因为如果没有发明,你就不知道它被称为C++,因此你错了:不要把它看得太合乎逻辑了,称教授为过时而错误是对他的一种尊重。@qub1n:如果他真的知道自己的技能,而不是向手无寸铁的学生传播错误信息,我会对他更加尊重。