赋值给字符[8]的向量

Assigning to vector of char[8]

本文关键字:向量 字符 赋值      更新时间:2023-10-16

如何为std::vector<char[8]>分配某些内容?

#include <vector>
void test(void)
{
std::vector<char[8]> x; // works
x.push_back("7777777");
//
// error: array 'new' cannot have initialization arguments
// error: object expression of non-scalar type 'char [8]' 
//        cannot be used in a pseudo-destructor expression
char a[8] = "7777777";  
x.push_back(a);  
//
// error: array 'new' cannot have initialization arguments
// error: object expression of non-scalar type 'char [8]' 
//        cannot be used in a pseudo-destructor expression
char b[2][8] = {"7777777", "8888888"};
x.assign(b, b+2);
// 
// error: static_assert failed "type is not assignable"
// error: array 'new' cannot have initialization arguments
}// end of function

看起来可以创建一个std::vector<char[8]>但无法为其分配任何内容。如何至少制作最后一行(即x.assign(b, b+2)(工作?

非常感谢您的帮助!

您不能有std::vector<char[8]>char[8]因为它不满足值类型的std::vector要求。实际上,值类型要求为可擦除,char[8]没有为其提供默认分配器。

您可以改用std::vector<std::array<char,8>>std::array<char,8>不仅是可擦除的,而且是可分配的。