我想將數組的內容寫入向量中。將int數組的內容寫入向量中
int A[]={10,20,30,40,50,60,70,80,90};
vector<int> my_vector;
前面我用於陣列甲的內容複製到使用的memcpy另一個數組乙。我想用my_vector代替陣列乙
如何寫陣列一個成一次性my_vector的內容,而沒有for循環?
我想將數組的內容寫入向量中。將int數組的內容寫入向量中
int A[]={10,20,30,40,50,60,70,80,90};
vector<int> my_vector;
前面我用於陣列甲的內容複製到使用的memcpy另一個數組乙。我想用my_vector代替陣列乙
如何寫陣列一個成一次性my_vector的內容,而沒有for循環?
您可以使用memcpy
,或在C++ 98/03中使用這種初始化。
int A[]={10,20,30,40,50,60,70,80,90};
vector<int> my_vector(A, A + sizeof(A)/sizeof(*A));
也可以使用算法,如copy
。
std::copy(A, A + sizeof(A)/sizeof(*A), std::back_inserter(my_vector));
在C++ 11,使用std::begin(A)
,std::end(A)
表示開始和陣列的端部。
不要使用'memcpy'。 –
#include <algorithm>
#include <vector>
int main() {
int A[]={10,20,30,40,50,60,70,80,90};
std::vector<int> my_vector;
unsigned size = sizeof(A)/sizeof(int);
std::copy(&A[0],&A[size],std::back_inserter(my_vector));
}
C++ 11簡單得多。
#include <vector>
#include <algorithm>
int main() {
int A[]={10,20,30,40,50,60,70,80,90};
std::vector<int> my_vector(std::begin(A),std::end(A));
}
使用C++ 2011要使用
std::copy(std::begin(A), std::end(A), std::back_inserter(my_vector));
...或
std::vector<int> my_vector(std::begin(A), std::end(A));
...或者,實際上是:
std::vector<int> my_vector({ 10, 20, 30, 40, 50, 60, 70, 80, 90 });
如果你不」沒有C++ 2011,你想定義
namespace whatever {
template <typename T, int Size>
T* begin(T (&array)[Size]) { return array; }
template <typename T, int Size>
T* end(T (&array)[Size]) { return array + Size; }
}
和使用whatever::begin()
和whatever::end()
連同前兩種方法之一。
爲了完整性,在你的回答中可能值得一提的是其中一些是初始化,但是'std :: copy'用於複製到現有的向量中。 – juanchopanza
if C++ 11'vector my_vector(std :: begin(A),std :: end(A));' –
@ Mr.Anubis謝謝你.. :) –
@ Mr.Anubis發貼者爲一個答案,所以我可以給它合理的upvote它應得的和ajaybidari可以接受它:-) – oldrinb