阵列包括蟒蛇在C++中
问题描述:
我有蟒蛇的阵列,其声明如下范围:阵列包括蟒蛇在C++中
u[time][space]
我在Python的for循环代码要求我做到以下几点:
for n in range(0,10):
u[n][:] = 1
这个冒号表示我的[空间]的整个范围。
现在,我将如何去使用冒号(:)来指示在C++循环中执行整个范围?
谢谢
答
for(auto& inner : u)
std::fill(inner.begin(), inner.end(), 1);
答
建议使用两个循环。 类似于:
int n, s;
for(n=0; n<10; n++){
for(s=0; s<space; s++){
u[n][s] = 1;
}
}
应该工作。
答
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;
答
你将不得不使用两个循环。现代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++。恐怕你不得不在每张桌子上循环。
这应该是这样的(承认space
是一种已知的整数):
for (int i = 0; i < 10; i++)
for (int j = 0; j < space; j++)
u[i][j] = 1;
使用2个用C++环路(在Python等),而不是一个。 – Nuageux
你可能会用'auto v = std :: vector>(time,std :: vector (space,1));'而不是。 –
Jarod42
这个问题很含糊。你究竟想要做什么?如果你只是试图给矢量赋值1,看看[构造函数4](http://en.cppreference.com/w/cpp/container/vector/vector) - 否则,操纵矢量需要两个循环因为它在列表上没有切片语法 – kirinthos