2017-05-04 108 views
0

我有蟒蛇的陣列,其聲明如下範圍:陣列包括蟒蛇在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

回答

3
for(auto& inner : u) 
    std::fill(inner.begin(), inner.end(), 1); 
0

建議使用兩個循環。 類似於:

int n, s; 
for(n=0; n<10; n++){ 
    for(s=0; s<space; s++){ 
     u[n][s] = 1; 
    } 
} 

應該工作。

0

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; 
-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; 
0

我不記得有一個快速的方法來做到這一點在C++。恐怕你不得不在每張桌子上循環。

這應該是這樣的(承認space是一種已知的整數):

for (int i = 0; i < 10; i++) 
    for (int j = 0; j < space; j++) 
     u[i][j] = 1;