c++中vector和数组的互相转换
分类:C++, Others
阅读 (16,064)
Add comments
5月 052016
1. vector转数组: 使用memcpy将vector中的数据拷贝到数组中
注意: memcpy的第三个参数,拷贝长度必须乘以sizeof(vec[0])
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
#include <vector> #include <iostream> using std::vector; int main(void){ //初始化为10个c字符 vector<unsigned char> vec(10, 'c'); unsigned char charary[vec.size()]; //vector全部转到数组 memcpy(charary, &vec[0], vec.size() * sizeof(vec[0])); for(int i = 0; i != sizeof(charary); ++i){ std::cout << charary[i] ; } std::cout << std::endl; //转部分vector数据到数组,最后4个 unsigned char ary1[4]; memcpy(ary1, &vec[6], 4); for(int i = 0; i != sizeof(ary1); ++i){ std::cout << ary1[i] ; } std::cout << std::endl; return 0; } |
2. 数组转vector:使用vector的初始化构造函数
注意:这个版本的vector的构造函数,第一个参数为源数据的指针起始地址,第二个参数为要拷贝的个数(不是内存字节长度),所以要除以一个sizeof(int)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
#include <vector> #include <iostream> using std::vector; int main(void){ int ary[] = {10, 18, 9, 1, 66, 0, 102, 32, 99, 70}; vector<int> vec(ary, ary + sizeof(ary) / sizeof(int)); for(int i = 0; i != vec.size(); ++i){ std::cout << vec[i] << ", "; } std::cout << std::endl; return 0; } |