[英]what is the best way to convert a vector<int32_t> to int[]
我有一個保存int32_t的向量,並且我正在Windows 64位上工作。 我需要將其轉換為一個int數組。
因為在我的特定平台上,int32_t和int本質上是相同的類型,所以我可以這樣做:(假設該數組具有足夠的空間來容納vector中的所有數據)
int out[1000]; //assuming that in has less data than 1000
std::vector<int32_t> in=getdata();
memcpy(out,&int[0],in.size());
但是它可以在uint32_t和int本質上是相同類型的平台上工作。
確保它獨立於平台並且可以在任何int並非32位平台上運行的最佳方法是什么?
如果您正在尋找一種可移植的方式來復制數據,那么我將使用std::copy
std::copy(in.begin(), in.end(), std::begin(out));
如果您想反過來將數組復制到向量中,則可以使用帶有兩個迭代器的向量構造函數:
some_type array_name[some_size];
std::vector<some_type> vector_name(std::begin(array_name), std::end(array_name));
如果要將數組添加到已經存在的向量中,則可以使用std::vector::assign
將用數組替換向量的內容
some_type array_name[some_size];
vector_name.assign(std::begin(array_name), std::end(array_name));
如果要保留向量的內容並將數組的內容附加到向量中,則可以將復制與std::back_inserter
some_type array_name[some_size];
std::copy(std::begin(array_name), std::end(array_name), std::back_inserter(vector_name));
std::vector<int32_t> in=getdata();
std::vector<int> out( in.begin(), in.end() );
然后,您可以使用out.data()
out
作為數組進行訪問。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.