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

C++ vector 常見錯誤:類型不匹配與輸出操作符缺失

     編輯:程式設計綜合問答

錯誤代碼

vector<int> res_var;
res_var = var[i] + var[i+1];  // 錯誤:無法將 int 賦值給 vector<int>
cout << res_var;              // 錯誤:vector 無 operator<< 重載
if (var.size() % 2 = 1)       // 錯誤:= 是賦值,非比較

錯誤解析

  1. 類型不匹配:var[i] + var[i+1] 是 int,不能直接賦值給 vector<int>。應定義 int sum = var[i] + var[i+1]; 或 res_var.push_back(sum);。
  2. 缺少輸出重載:標準庫未為 vector 提供 operator<<,需手動遍歷輸出。
  3. 條件判斷寫錯:if (var.size() % 2 = 1) 應為 ==。

修正版代碼

#include <iostream>
#include <vector>
using namespace std;

int main() {
    int word;
    vector<int> var;
    cout << "Please enter a group numbers (Ctrl+Z to end):" << endl;
    while (cin >> word) {
        var.push_back(word);
    }

    for (vector<int>::size_type i = 0; i + 1 < var.size(); i += 2) {
        int sum = var[i] + var[i+1];
        cout << sum << " ; ";
    }
    if (var.size() % 2 == 1) {
        cout << "The last one no add." << endl;
    }
    return 0;
}

進階技巧

  • 使用 std::accumulate 或範圍 for 簡化求和。
  • C++20 可用 std::views::chunk(2) 兩兩分組處理。
  • 輸出 vector 通用輔助函數:
    template <typename T>
    void printVec(const vector<T>& v, const string& delim = " ") {
        for (size_t i = 0; i < v.size(); ++i) {
            if (i) cout << delim;
            cout << v[i];
        }
        cout << '\n';
    }
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved