C++ 中vector和数组的互相转换

一. vector转数组: 使用memcpy将vector中的数据拷贝到数组中

注意: memcpy的第三个参数,拷贝长度必须乘以sizeof(vec[0])

#include 
#include 
 
using std::vector;
 
int main(void){
    //初始化为10个c字符
    vector vec(10, 'c');
    unsigned char charray[vec.size()];
 
    //vector全部转到数组
    memcpy(charray, &vec[0], vec.size() * sizeof(vec[0]));
 
    for(int i = 0; i != sizeof(charray); ++i){
        std::cout << charray[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;
}

二. 数组转vector:使用vector的初始化构造函数

a. 定义vector时直接赋值,如:
vector v(array, array + sizeof(array))  //其用法是:vector v(a, a+N)  (其中:N代表数组长度.)
b. 先定义vector,其元素数目为N,再使用memcpy将array的值拷贝到vector中,如:
vector v(N)
memcpy(&V[0], array, sizeof(array))

你可能感兴趣的:(C++ 中vector和数组的互相转换)