C ++相当于python代码:“for x in iterable:”


C++ equivalent to the python code: “for x in iterable:”

本问题已经有最佳答案,请猛点这里访问。

我想在C++中用Python之类的东西做:

1
2
3
4
nums=[31, 46, 11, 6, 14, 26]
nlttf=[]
for n in nums:
    if n<25:nlttf.append(n)


这是基于循环的范围:

1
2
3
4
5
SomethingIteratable cont;

for (const auto &v : cont) {
    // Do something
}

像往常一样,const auto &v给你不可变的引用,auto &v可变的引用和auto v可变的深度副本。

注意:您不能在循环中做任何使您所迭代的容器的迭代器无效的事情。


这是另一种选择,使用C++ 11和Boost库:

1
2
3
4
5
6
7
8
9
10
11
#include <iostream>
#include <boost/foreach.hpp>
#include <vector>
int main(){
  std::vector<int> nums {31, 46, 11, 6, 14, 26};
  std::vector<int> nltff;
  BOOST_FOREACH(auto n, nums) if (n < 25) nltff.push_back(n);
  BOOST_FOREACH(auto n, nltff) std::cout << n <<"";
  std::cout << std::endl;
  return 0;
}

输出:

1
11 6 14


如果你有C++ 11,那么代码如下:

1
for (int n: iterator) { /*Do stuff with n*/ }

If you have C++11 or greater, then you can do it this way.

1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>
#include <vector>
using namespace std;

int main() {
    int num[] = {31, 46, 11, 6, 14, 26};
    vector<int>nlttf;
    for(int n:num){
        if(n<25)nlttf.push_back(n);
    }
    return 0;
}

根据语句(C++)读取此范围。

有关std::vector的信息,请参阅此链接和此链接。