[英]how to initialize a vector struct of vectors?
所以我有這個結構:
struct lang_accuracy{
std::vector<int> sum;
vector<string> language;
};
和這個向量的類型結構
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個向量,因此必須首先在s
使用push_back
分配更多的內存,而不是對vector s
元素i
進行初始化。 但是sum
和language
也是向量,由於某種原因,我無法編譯上面的代碼,因為我得到了:
錯誤C2661:'
std::vector<int,std::allocator<_Ty>>::push_back
:::std::vector<int,std::allocator<_Ty>>::push_back
':沒有重載函數接受0個參數
我知道在vector<vector<type>>
的情況下,您將第一個向量中的push_back
元素壓入,當它滿了時,您push_back
整個向量push_back
壓入另一個。 在這里我不能這樣做,因為sum
和lang
在struct之外未被識別為獨立的。
我該如何計算sum
?
錯誤非常明顯。 您沒有為push_back
提供任何內容來添加到向量中。
例如,要添加sum
您應該首先指定要添加的內容:
s[i].sum.push_back(42); // add 42 to `sum`
最好使用emplace_back
提供值,這樣就不會涉及任何臨時任務:
s.emplace_back();
for (int k = 0;...)
{
s[i].sum.emplace_back(42);
}
s[i].language.emplace_back("whatever");
函數vector<T>::push_back(T)
並不是主要用於分配內存,而是用於在向量的后面添加一個項目(並在必要時為該項目分配更多的內存)。
無需使用兩步方法,只需一個即可:
s[i].sum.push_back(`some integer value`);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.