将向量<int32_t>转换为 int[] 的最佳方法是什么
what is the best way to convert a vector<int32_t> to int[]
我有一个向量,它包含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
。
相关文章:
- 为什么在全局范围内使用"extern int a"似乎不行?
- 在C#中处理C++指针而不使用unsafe的最佳方法
- int(c) 和 c-'0' 之间的区别。C++
- 从"int*"强制转换为"unsigned int"会丢失精度错误
- 在C++中,将大的无符号浮点数四舍五入为整数的最佳方法是什么
- 为什么野牛仍在使用"int yylex(void)",却找不到"int yylex(YYS
- 实现无开销push_back的最佳方法是什么
- 有符号的int和int-有没有一种方法可以在C++中区分它们
- 请解释这句话(cout<<1+int((a<b)^((b-a)&1) )<<endl
- 是否可以从int转换为enum类类型
- 不能在初始值设定项列表中将非常量表达式从类型 'int' 缩小到'unsigned long long'
- 向量 <int> a {N, 0} 和 int arr a[N] = {0} 的时间复杂度有什么区别
- 'short int'持有的值溢出,但"自动"不会溢出?
- 如何在C++中将一个无符号的 int 转换为两个无符号的短裤?
- 什么是在C 中存储结果INT*的最佳数据类型
- 将映射从字符串到INT的最佳方法,而另一个同时进行的方式
- 将 int 转换为 char 数组的最佳方法
- 使C++软件包和C#软件包访问相同枚举/常量int的最佳方法
- 将向量<int32_t>转换为 int[] 的最佳方法是什么
- 在VS2008和GCC中编译静态const int=X的最佳代码