首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

C++ Primer 第五版:vector 初始化與範圍 for 循環陷阱

     編輯:程式設計綜合問答

錯誤代碼

vector num(10); // 已有 10 個 0
while (cin >> i) num.push_back(i); // 追加到後面
for (auto &n : num) n *= 2; // 前 10 個 0 變 0,後 10 個正常

核心誤解

vector num(10) 構造含 10 個元素(值為 0)的向量,而非預留容量。push_back 會在這 10 個元素之後追加。

正確寫法

vector num;
num.reserve(10); // 僅預留容量,size=0
int i;
while (cin >> i) num.push_back(i);
// 或直接
vector num(10);
for (int &x : num) cin >> x; // 覆蓋初始值

範圍 for 循環引用

for (auto &n : num) 確實能修改原元素,但前提是元素已存在且非默認構造的佔位符。理解 size() 與 capacity() 的區別至關重要。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved