std::vector<int> v;
for (size_t i=0; i<100; i++)
v.push_back(0);
正如您所看到的,它對每個元素都重複相同的值。有沒有一種方法來初始化一個矢量沒有一個循環?如果不是,哪種方法最快?如何在沒有周期的情況下初始化std :: vector?
在此先感謝您的幫助。
std::vector<int> v;
for (size_t i=0; i<100; i++)
v.push_back(0);
正如您所看到的,它對每個元素都重複相同的值。有沒有一種方法來初始化一個矢量沒有一個循環?如果不是,哪種方法最快?如何在沒有周期的情況下初始化std :: vector?
在此先感謝您的幫助。
您可以使用構造函數來獲取大小。這將對所有元素進行初始化。對於int
這意味着零初始化:
std::vector<int> v(100); // 100 elements with value 0
如果你需要一個不同的號碼,那麼你可以傳遞第二個參數與所需的值:
std::vector<int> v(100, 42); // 100 elements with value 42
,如果你要考慮從@juanchopanza答案初始化施工;但如果您想爲代碼的任何其他部分中的vector
中的所有記錄設置相同的值,則可以考慮採用std::fill
。
你不想這樣做。 'v.resize(value)'或'v.insert(v.end(),n,value)'是更好的解決方案。 –
@JamesKanze爲什麼? – user2485710
通常的原因是:如果沒有其他原因,它總是更喜歡容器的成員函數,否則會更有效率。 (在這種情況下:'resize'或'insert'永遠不會重複分配一次,'std :: fill'可以做很多事情。) –