数组在 C++ 中包含来自 python 的范围
Posted
技术标签:
【中文标题】数组在 C++ 中包含来自 python 的范围【英文标题】:array include range from python in c++ 【发布时间】:2017-05-04 14:52:46 【问题描述】:我在python中有一个数组,声明如下:
u[time][space]
我在 Python 的 for 循环中的代码要求我执行以下操作:
for n in range(0,10):
u[n][:] = 1
这个冒号表示我的[空格]的整个范围。 现在,在 c++ 中执行 for 循环时,我将如何使用冒号 (:) 来指示整个范围?
谢谢
【问题讨论】:
在 C++ 中使用 2 个循环而不是 1 个(就像在 Python 中一样)。 您可以改用auto v = std::vector<std::vector<int>>(time, std::vector<int>(space, 1));
之类的东西。
这个问题很模糊。你到底想做什么?如果您只是想为向量分配值 1,请查看 constructor 4 - 否则,操作向量需要两个循环,因为它在列表上没有切片语法
【参考方案1】:
for(auto& inner : u)
std::fill(inner.begin(), inner.end(), 1);
【讨论】:
【参考方案2】:按照建议使用两个循环。 比如:
int n, s;
for(n=0; n<10; n++)
for(s=0; s<space; s++)
u[n][s] = 1;
应该可以。
【讨论】:
【参考方案3】:C++ 没有等价于
for n in range(0,10):
u[n][:] = 1
您将不得不编写u[n][:] = 1
表示的循环。幸运的是,基于范围的 for 循环非常简单。看起来像
int foo[3][3];
for (auto& row : foo)
for (auto& col : row)
col = 1;
【讨论】:
【参考方案4】:我不记得在 C++ 中快速的方法了。恐怕你必须在每个表中循环。
这看起来像这样(承认space
是一个已知整数):
for (int i = 0; i < 10; i++)
for (int j = 0; j < space; j++)
u[i][j] = 1;
【讨论】:
【参考方案5】:您将不得不使用两个循环。现代 C++ 有一些技巧可以让初始化这些循环变得简单,但这里有一个基本的 C 示例,它可以在任何地方工作:
#define TIME_MAX 100
#define SPACE_MAX 350
int u[TIME_MAX][SPACE_MAX];
int i, j;
for (i = 0; i < TIME_MAX; i++)
for (j = 0; j < SPACE_MAX; j++)
u[i][j] = 1;
【讨论】:
以上是关于数组在 C++ 中包含来自 python 的范围的主要内容,如果未能解决你的问题,请参考以下文章
ValueError:数组不能在 Python3.X 的 SpectralCoclustering 中包含 infs 或 NaNs
如何在 CURLOPT_POSTFIELDS 中包含数组数据? [复制]
华为机试真题 C++ 实现通信误码2022.11 Q4 新题
为啥我会收到此错误? “[variable] 没有命名类型”在 C++ 中用于 std::string 数组,即使它已被包含并且在同一范围内