将向量<int32_t>转换为 int[] 的最佳方法是什么

what is the best way to convert a vector<int32_t> to int[]

本文关键字:int 最佳 方法 是什么 gt lt 向量 int32 转换      更新时间:2023-10-16

我有一个向量,它包含int32_t,我正在64位windows上工作。我需要将其转换为int数组。

由于在我的特定平台上,int32_t和int本质上是相同的类型,我可以这样做:(假设数组有足够的空间来容纳向量中的所有数据(

 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