例如,假設我有以下代碼:在C++中,什麼時候析構函數自動爲局部向量調用?
vector<vector<int>> big;
for (int i=0;i<3;++i){
vector<int> small;
small.push_back(3*i+1);
small.push_back(3*i+2);
small.push_back(3*i+3);
big.push_back(small);
}
for (vector<int> s:big){
for (int a:s){cout<<a<<" ";}
cout<<endl;
}
的COUT給人造成那麼大包含了分別用於閉環矢量值小,我很困惑,因爲我以爲矢量小會自動被破壞每個循環。 爲什麼大牌仍然有權訪問正確的價值?
謝謝!
它*被*破壞,但是當你將它推向大矢量時,它被*複製*。 –
然後,當你說'for(vector s:big)'時,它會被再次複製。可能與這個問題不相關,但最好避免一般。首選'for(auto&s:big)'。 –
5gon12eder