我有蟒蛇的陣列,其聲明如下範圍:陣列包括蟒蛇在C++中
u[time][space]
我在Python的for循環代碼要求我做到以下幾點:
for n in range(0,10):
u[n][:] = 1
這個冒號表示我的[空間]的整個範圍。
現在,我將如何去使用冒號(:)來指示在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