首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何初始化数组的向量

如何初始化数组的向量
EN

Stack Overflow用户
提问于 2015-10-20 03:21:45
回答 2查看 1.1K关注 0票数 0

我想要创建一个数组向量

代码语言:javascript
复制
vector<BYTE[6]> cKey;
BYTE keyTemp[6];
memset(keyTemp, 0xFF, sizeof(keyTemp)); // Key is FFF...FF
cKey.push_back(keyTemp);

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

代码语言:javascript
复制
Error C3074: an array can only be initialized with an initializer-list

如何初始化数组的向量?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-10-20 03:50:27

我不知道你用了什么数据类型。这里它是如何与int数组一起工作的。

代码语言:javascript
复制
#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;
    }
票数 -1
EN

Stack Overflow用户

发布于 2015-10-20 03:45:38

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

解决方案是使用std::array作为基础类型,而不是原始数组:

代码语言:javascript
复制
#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);
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33227431

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档