如何初始化数组的向量

how to initialize a vector of array

本文关键字:向量 数组 初始化      更新时间:2023-10-16

我想创建一个数组

的向量
vector<BYTE[6]> cKey;
BYTE keyTemp[6];
memset(keyTemp, 0xFF, sizeof(keyTemp)); // Key is FFF...FF
cKey.push_back(keyTemp);

但是在push_back函数中,显示错误

Error C3074: an array can only be initialized with an initializer-list

如何初始化数组的vector

不能。std::vector使用的底层类型必须是CopyAssignable,而数组则不是。参考:http://en.cppreference.com/w/cpp/container/vector

一个解决方案是使用std::array作为底层类型,而不是原始数组:

#include <iostream>
#include <vector>
#include <array>
using BYTE = unsigned char;
int main()
{
    std::vector<std::array<BYTE, 6>> cKey;
    std::array<BYTE, 6> keyTemp{0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
    cKey.push_back(keyTemp);
}

我不知道你用了什么数据类型的字节。下面是如何使用int数组的:

#include <iostream>
#include <vector>
    int main()
    {
        std::vector<int*> cKey;
        int keyTemp[8] = { 1,2,3,4,5,6,7,8 };
        cKey.push_back(keyTemp);
        std::cout << cKey[0][6] << std::endl;
        system("pause");
        return 0;
    }