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))起作用?
非常感谢您的帮助!
你不能吗 有一个std::vector<char[8]>因为char[8]不满足std::vector对值类型的要求。在实际中,值类型要求是可擦除的,这char[8]没有默认的分配器。
您可以std::vector<std::array<char,8>>改用。std::array<char,8>不仅是可擦除的,而且是可分配的。
| 归档时间: |
|
| 查看次数: |
59 次 |
| 最近记录: |