的數組賦值,所以當你初始化數組,你可以在一個地方分配多個值給它:C++多個值
int array [] = {1,3,34,5,6}
但如果陣列已經初始化,我想完全替代值該數組中的元素在一行中的
所以
int array [] = {1,3,34,5,6}
array [] = {34,2,4,5,6}
似乎不工作...
有沒有辦法做到這一點?
的數組賦值,所以當你初始化數組,你可以在一個地方分配多個值給它:C++多個值
int array [] = {1,3,34,5,6}
但如果陣列已經初始化,我想完全替代值該數組中的元素在一行中的
所以
int array [] = {1,3,34,5,6}
array [] = {34,2,4,5,6}
似乎不工作...
有沒有辦法做到這一點?
初始化和賦值之間存在差異。你想要做的不是初始化,而是分配。但是在C++中這樣的數組賦值是不可能的。
這裏是你可以做什麼:
#include <algorithm>
int array [] = {1,3,34,5,6};
int newarr [] = {34,2,4,5,6};
std::copy(newarr, newarr + 5, array);
然而,在C++ 0x中,你可以這樣做:
std::vector<int> array = {1,3,34,5,6};
array = {34,2,4,5,6};
當然,如果你選擇使用std::vector
而不是原始數組。
你必須通過替換值的一個一個諸如在一個for循環或複製在另一種這樣的另一個陣列如使用memcpy(..)
或std::copy
例如
for (int i = 0; i < arrayLength; i++) {
array[i] = newValue[i];
}
務必小心,以確保適當的邊界檢查和需要發生,以防止出界的問題進行任何其他檢查。
const static int newvals[] = {34,2,4,5,6};
std::copy(newvals, newvals+sizeof(newvals)/sizeof(newvals[0]), array);
鏈接到在線演示不起作用 – 2014-03-23 18:51:50
'標準::複製(STD ::開始(newarr)的std ::結束(newarr)的std ::開始(陣列));'會更好,不是嗎? – 2015-05-12 21:01:47
@MattCruikshank:是的。但這在C++ 03中是不可能的。 – Nawaz 2015-05-13 03:19:55