"for num in [1,4,5]" Python 等效于 C++?
"for num in [1,4,5]" Python equivalent in C++?
C++中是否有直接类比?
for num in [1,4,5] :
使用 num=1
遍历循环,然后是 4
,然后是 5
。如果我在此循环中呼叫 continue,它会转到下一个号码,无论我在哪里调用它。
C++有类似的结构吗?
在 C++11 中,以下内容是合法的:
for (auto num : {1,4,5})
{
// loop body
}
{1,4,5}
这里是std::initializer_list<int>
的一个实例。
在 C++03 中,最接近的等价物是:
int values[] = {1,4,5};
for (int *p = values; p != values + sizeof(values) / sizeof(*values); ++p) {
int num = *p;
...
}
当您不再需要它时,已添加到 C++11 中作为std::end
定义的常见事情是:
template <typename T, size_t N>
T *endof(T (&ra)[N]) {
return ra + N;
}
然后你像这样使用它:
int values[] = {1,4,5};
for (int *p = values; p != endof(values); ++p) {
int num = *p;
...
}
因此,对于C++03,简短的回答是"否",没有类似的结构。
带有前向迭代器的vector<int>
。
编辑:
伙计,我的C++生锈了...
#include <iostream>
#include <vector>
int main(int argc, char *argv[])
{
int ints[] = {1, 4, 5};
std::vector<int> v (ints, ints + 3);
for (std::vector<int>::iterator i = v.begin(); i != v.end(); i++)
{
std::cout << *i << std::endl;
}
}
类似的是创建这个整数的 stl-Vector,并使用 for 循环和迭代器对其进行迭代。但我认为,在C++这样做并不是一件非常实际的事情。
正如 Ignacio 的回答中所述,来自标准模板库的向量是通往这里的方式。cplusplus.com 条目中的第一个示例似乎是您想要的。
Boost.Foreach 是你正在寻找的东西。
相关文章:
- 如何运行位于boost/libs/python/example/tutorial目录中的hello.cpp和Jamfil
- Pybind11:将元组列表从Python传递到C++
- 如何在c++中使用引用实现类似python的行为
- 是否可以通过C++扩展强制多个python进程共享同一内存
- 递归列出所有目录中的C++与Python与Ruby的性能
- IPC使用多个管道和分支进程来运行Python程序
- 从python中调用C++函数并获取返回值
- Python 3.7 和 excess_args 的 SWIG 问题
- Python中的for循环与C++有何不同
- 使用Pybind11向Python公开Eigen::张量
- Python str to C++ to Python str
- 如何使用Python从C++中读取谷物序列化数据
- 如何在C++中使用pybind11加载一个pickle python列表
- 如何在c++中使用system()来运行包含空格的python脚本
- python集合的C++等价物是什么.计数器
- 如果C++对象的类在另一个boost模块中声明,如何使用boost将指向该对象的指针返回到python
- 从python调用openMP共享库时,未定义opnMP函数
- 使用JsonCpp将数据返回到带有pybind11的python会在python调用中产生Symbol not foun
- 如何将真正的字符串从python c-api转换为python脚本
- Python ctype 'c_char_p' Memory Leak