C++ 赋值给char[8]的向量

C++ 赋值给char[8]的向量,c++,arrays,vector,char,C++,Arrays,Vector,Char,如何将某些内容分配给std::vector 包括 无效测试无效 { std::vector x;//有效 x、 向后推777; // //错误:数组“new”不能有初始化参数 //错误:非标量类型“char[8]”的对象表达式 //不能在伪析构函数表达式中使用 字符a[8]=777; x、 向后推; // //错误:数组“new”不能有初始化参数 //错误:非标量类型“char[8]”的对象表达式 //不能在伪析构函数表达式中使用 字符b[2][8]={77777,88888888}; x、 b

如何将某些内容分配给std::vector

包括 无效测试无效 { std::vector x;//有效 x、 向后推777; // //错误:数组“new”不能有初始化参数 //错误:非标量类型“char[8]”的对象表达式 //不能在伪析构函数表达式中使用 字符a[8]=777; x、 向后推; // //错误:数组“new”不能有初始化参数 //错误:非标量类型“char[8]”的对象表达式 //不能在伪析构函数表达式中使用 字符b[2][8]={77777,88888888}; x、 b,b+2; // //错误:静态\u断言失败类型不可分配 //错误:数组“new”不能有初始化参数 }//功能结束 看起来可以创建std::vector,但不可能为其分配任何内容。如何使至少最后一行,即x.assignb,b+2工作

非常感谢你的帮助

您不能̣拥有std::vector,因为char[8]不满足std::vector对值类型的要求。在实践中,值类型要求是可擦除的,而char[8]并没有被赋予默认的分配器

您可以改用std::vector。std::array不仅可擦除,而且可赋值。

您不能拥有std::vector,因为char[8]不满足std::vector对值类型的要求。在实践中,值类型要求是可擦除的,而char[8]并没有被赋予默认的分配器


您可以改用std::vector。std::array不仅可擦除,而且可分配。

std::vector x;数组非常愚蠢。它们是60年代和70年代问题的优雅解决方案,但今天它们显示出了裂痕。由于您正在存储字符串,请考虑STD::String。如果已经被淘汰,请考虑使用STD::当然,这是一个显而易见的解决方案。我所有的字符串都是8个字符长的,因此我认为使用char[8]会更有效。是否可能,或者std::string路由是唯一的方法?我可以推荐:@S.V std::vector x;将是最自然的替代品。如果您通过分析和基准测试发现速度太慢,那么可以使用std::vector x;但不能使用字符串文字。还有std::向量x;但这与对象生命周期有关;数组非常愚蠢。它们是60年代和70年代问题的优雅解决方案,但今天它们显示出了裂痕。由于您正在存储字符串,请考虑STD::String。如果已经被淘汰,请考虑使用STD::当然,这是一个显而易见的解决方案。我所有的字符串都是8个字符长的,因此我认为使用char[8]会更有效。是否可能,或者std::string路由是唯一的方法?我可以推荐:@S.V std::vector x;将是最自然的替代品。如果您通过分析和基准测试发现速度太慢,那么可以使用std::vector x;但不能使用字符串文字。还有std::向量x;但这与对象生命周期有关;字符c[2][8]={77777,88888888};y、 c,c+2;不起作用。我得到以下错误:错误:没有可行的重载“=”和错误:没有用于初始化“std::array”的匹配构造函数。然而,std::vector似乎可以工作。@S.V std::array不能像普通数组那样从字符串文本创建。可以使用如下所示的辅助函数:std::vector y;字符c[2][8]={77777,88888888};y、 c,c+2;不起作用。我得到以下错误:错误:没有可行的重载“=”和错误:没有用于初始化“std::array”的匹配构造函数。然而,std::vector似乎可以工作。@S.V std::array不能像普通数组那样从字符串文本创建。您可以使用助手函数,如下所示: