我有一個數組這樣的:混淆陣列
int sizes[5] = {1,2,3,4,5};
我想通過使用上述陣列具有5個不同的陣列。因爲我希望每個陣列的尺寸爲sizes[i]
(0 < = i < 5)。我怎樣才能做到這一點?我越思考這一點,我越感到困惑。我必須使用多維數組還是僅使用更簡單的解決方案?提前致謝。
我有一個數組這樣的:混淆陣列
int sizes[5] = {1,2,3,4,5};
我想通過使用上述陣列具有5個不同的陣列。因爲我希望每個陣列的尺寸爲sizes[i]
(0 < = i < 5)。我怎樣才能做到這一點?我越思考這一點,我越感到困惑。我必須使用多維數組還是僅使用更簡單的解決方案?提前致謝。
簡單,你只需要動態內存分配:
int sizes = {1, 2, 3, 4, 5};
int **arrays;
int i;
arrays = new int*[5];
for(i = 0; i < 5; i++)
arrays[i] = new int[sizes[i]]
這是一個簡單的事情開始,但在現實生活中的STL庫更加有用。在這段代碼中,內存是動態分配的,但沒有發佈。這可能導致內存泄漏。使用STL庫中的std::vector
可以讓您免於麻煩,並提供更簡單的方法。
@Mikhail展示了使用下面vector
s的良好演示。
要回答這個問題,是的,你需要一個最有效的情況下的多維數組。一個數組數組,而元素是動態分配的(考慮你指定的數組數量是常數)。
int *Array[5];
for(int i = 0; i < sizes; i++)
{
Array[i] = new int[sizes[i]];
}
你現在有5個動態分配數組從0號到5大小
你必須使用一個動態分配的,這樣的事情:
int *arrays[5];
int i = 0;
int sizes[] = {1,2,3,4,5};
for(i = 0; i < 5; i++)
{
arrays[i] = (int *)malloc(sizes[i]);
}
我要求STL中線!
std::vector<int> arrays[5];
for (i = 0; i < 5; ++i)
arrays[i].resize(sizes[i]);
正如我理解你的問題,你需要的數組長度可以在範圍[0,5](可變長度)。
所以有很多的選擇,我會爲您提供2其中:
當你打上C++標記你的問題我給你指STL,它提供了一個很多方便的容器,其中之一是std::vector
這是動態數組(它的大小可以變化)。
如果填充方便與Ç,則可以使用一個數組指針的,它們中的每將在陣列的指針。
所以你想要一個元素的5個數組?你的問題沒有完全意義 –
我想我的第一個數組的大小爲1,第二個爲2,依此類推。 – w1LL1ng