分配给char [8]的向量

S.V*_*S.V 1 c++ arrays vector char

怎样才能给分配东西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
Run Code Online (Sandbox Code Playgroud)

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

非常感谢您的帮助!

eer*_*ika 5

你不能吗 有一个std::vector<char[8]>因为char[8]不满足std::vector对值类型的要求。在实际中,值类型要求是可擦除的,这char[8]没有默认的分配器。

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