所以我有这个结构:
struct lang_accuracy{
std::vector<int> sum;
vector<string> language;
};
和这个类型结构的 vector
vector<lang_accuracy> s;
...
for (int i = 0;...)
{
s.push_back(lang_accuracy());
for (int k = 0;...)
{
s[i].sum.push_back(); // `<- error`
s[i].sum[k]=`some integer value`;
}
s[i].language.push_back(); // `<- error`
s[i].language[i] = `some string`;
}
因此,由于我的结构中有 2 个 vector ,我必须首先使用 push_back
分配更多内存在 s
然后继续元素 i
vector s
并初始化。
但是sum
和 language
也是 vector ,出于某种原因,我无法编译上面的内容,因为我得到了这个:
error C2661: '
std::vector<int,std::allocator<_Ty>>::push_back
': no overloaded function takes 0 arguments
我知道在 vector<vector<type>>
的情况下你push_back
第一个 vector 中的元素,当它已满时,你 push_back
整个 vector 变成另一个。
在这里我不能这样做,因为 sum
和 lang
在结构之外不被识别为独立的。
我应该如何填充我的 sum
比?
最佳答案
错误很明显。您没有向 push_back
提供任何内容以添加到 vector 中。
例如,要向 sum
添加一些内容,您应该首先指定要添加的内容:
s[i].sum.push_back(42); // add 42 to `sum`
关于c++ - 如何初始化 vector 的 vector 结构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50258929/