阵列包括蟒蛇在C++中

问题描述:

我有蟒蛇的阵列,其声明如下范围:阵列包括蟒蛇在C++中

u[time][space] 

我在Python的for循环代码要求我做到以下几点:

for n in range(0,10): 
    u[n][:] = 1 

这个冒号表示我的[空间]的整个范围。
现在,我将如何去使用冒号(:)来指示在C++循环中执行整个范围?

谢谢

+0

使用2个用C++环路(在Python等),而不是一个。 – Nuageux

+0

你可能会用'auto v = std :: vector >(time,std :: vector (space,1));'而不是。 – Jarod42

+0

这个问题很含糊。你究竟想要做什么?如果你只是试图给矢量赋值1,看看[构造函数4](http://en.cppreference.com/w/cpp/container/vector/vector) - 否则,操纵矢量需要两个循环因为它在列表上没有切片语法 – kirinthos

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;