簡體   English   中英

轉換向量的最佳方法是什么 <int32_t> 詮釋[]

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM