Dictionary::Dictionary() {
ifstream infile;
infile.open("words");
string wread;
while(getline(infile,wread)){
wordset.insert(wread);
vector<string> st =Read::Trigrams(wread);
//Word w(wread,st) stack försvinner när vi lämnar metoden.
words[wread.length()].push_back(Word(wread,st)); //stack eller heap
}
infile.close();
}
這是一個類Dictionary的構造函數。 我想創建一個單詞對象並將其添加到矢量。 我應該寫 words [wread.length()]。push_back(Word(wread,st)); 或 W(wread,st); words [wread.length()]。push_back(w); w將被分配在堆棧上,當我們離開構造函數時它將被刪除。對象分配在堆棧或堆C++
它沒有區別,它們都被分配在堆棧上。 –
其實你應該使用'emplace_back'來提高性能和清晰度。 – Xarn
@HansPassant標準沒有具體說明,但實際上你是正確的。具有_automatic_存儲時間的對象幾乎總是分配在堆棧上。然而,一個實現可能會選擇在堆上分配,因爲生命週期仍然是自動的。 – Mgetz