c++ - 如何初始化数组 vector

标签 c++ arrays vector mfc

<分区>

我想创建一个数组 vector

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);
}

关于c++ - 如何初始化数组 vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33227431/

相关文章:

c++ - std::vector::clear()-ing 二维 vector 线程的内部 vector 是否安全?

c++ - 这个回调有什么问题?

c++ - std::string(itr, itr) 应该做什么?

c++ - 将子部件放在父部件的特定位置

c++ - 添加库时出现 Qt 错误 - 没有创建目标的规则

c - 动态数组是在没有 malloc 的情况下分配的

arrays - Ruby 路径数组,如果包含在另一个项目中则进行排序和删除

arrays - PyTorch:torch.arange 中的行为不一致

c++ - 随机发生器从 vector 中选择一个数字并将其删除

C++ vector - push_back