首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C++ >> 關於C++

C++ STL vector 容器入門:動態數組實戰示例

     編輯:關於C++

vector 簡介

std::vector 是 C++ 標準庫中的動態數組容器,支援自動內存管理、隨機訪問、尾部常數時間插入刪除,是替代傳統數組的首選。

核心操作速查

操作說明
push_back(val)尾部添加元素
pop_back()移除尾部元素
size()當前元素數量
begin()/end()迭代器範圍
sort(begin, end)排序(需 <algorithm>)

實戰:學期成績計算

讀取期中、期末成績與若干作業分數,計算加權總評(期中 20%、期末 40%、作業中位數 40%)。

完整代碼

#include <iostream>
#include <iomanip>
#include <vector>
#include <algorithm>
#include <string>
using namespace std;

int main() {
    cout << "請輸入姓名:";
    string name; cin >> name;
    cout << "Hello " << name << "!\n";

    cout << "請輸入期中與期末成績:";
    double midterm, final; cin >> midterm >> final;

    cout << "請輸入所有作業成績(EOF 結束):\n";
    vector<double> hw;
    double x;
    while (cin >> x) hw.push_back(x);

    if (hw.empty()) {
        cerr << "至少需要一個作業成績!\n";
        return 1;
    }

    sort(hw.begin(), hw.end());
    size_t mid = hw.size() / 2;
    double median = (hw.size() % 2 == 0) ? (hw[mid-1] + hw[mid]) / 2 : hw[mid];

    streamsize prec = cout.precision();
    cout << "最終成績:" << fixed << setprecision(3)
         << 0.2 * midterm + 0.4 * final + 0.4 * median
         << setprecision(prec) << endl;
    return 0;
}

關鍵點解析

  • vector<double> hw 無需預知大小,自動擴容
  • sort 需包含 <algorithm>,迭代器範圍 [begin, end)
  • 中位數計算區分奇偶長度
  • cout.precision() 保存/恢復輸出精度,避免影響後續輸出

常見陷阱

  • 忘記 #include <vector>
  • 使用 hw[i] 而未先 push_back 導致越界
  • 混淆 size()(元素數)與 capacity()(分配容量)
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved