我有這樣一個動態分配的陣列上的唯一指針:(?我認爲,在模板參數[]
是很重要的,右)在unique_ptr的動態分配數組上應用std :: begin()?
const int quantity = 6;
unique_ptr<int[]> numbers(new int[quantity]);
這應該是正確爲止。 順便說一下:是否有可能在這裏初始化像int some_array[quantity] = {};
這樣的元素?
現在我試圖遍歷數組是這樣的:
for (auto it = begin(numbers); it != end(numbers); ++it)
cout << *it << endl;
但我想不通,語法如何是正確的。有沒有辦法? 或者我可以用這樣的指標:
for (int i = 0; i < quantity; ++i)
cout << numbers[i] << endl;
是首選的其中之一? (不直接與標題相關:作爲下一步,我希望將它減少到基於範圍的for循環,但我現在只是擁有VS2010,但不能嘗試這樣做,但會有什麼我必須採取照顧?)
謝謝! Gerrit
你不能遍歷'unique_ptr',它就是一個指針。指針不是範圍。他們沒有開始或結束。你只需要在某處使用'quantity'。另外,是的,你可以像這樣初始化它:'new int [quantity]()'。 – GManNickG
爲什麼你不只是使用矢量有什麼特別的理由嗎? – Cubic
@GManNickG我只是認爲有一種方法,因爲你可以使用數組的開始()。感謝那個初始化技巧。這是C++ 11還是總是可能的? – Gerrit