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()(分配容量)