利用 `insert` 迭代器版本:
vectorcombine(const vector & a, const vector & b) { vector res = a; // 拷貝 a res.insert(res.end(), b.begin(), b.end()); // 追加 b return res; }
原理:`insert(pos, first, last)` 在 `pos` 前插入 `[first,last)` 範圍元素。`res.end()` 即尾部插入。
vectorv; v.reserve(100000); // 預分配,push_back 不再擴容
vector().swap(v); // C++11 前釋放內存唯一方法 // C++11: v.clear(); v.shrink_to_fit();
// 保持順序 O(n)
v.erase(remove(v.begin(), v.end(), val), v.end());
// 不保持順序 O(1)
auto it = find(v.begin(), v.end(), val);
if (it != v.end()) { *it = v.back(); v.pop_back(); }
int arr[] = {1,2,3};
vector v(arr, arr+3); // 構造函數範圍版
for (auto it = v.begin(); it != v.end(); ) {
if (shouldRemove(*it)) it = v.erase(it);
else ++it;
}
sort(v.begin(), v.end(), [](const Node& a, const Node& b) {
return a.key < b.key;
});
| 操作 | 推薦方法 | 避免 |
|---|---|---|
| 拼接 | insert(end, b.begin, b.end) | 循環 push_back |
| 清空並釋放 | swap 慣用語 / shrink_to_fit | clear() 後繼續用 |
| 查找並刪除 | find + swap-pop (無序) / erase-remove (有序) | 循環 erase |
掌握 STL 容器的高效用法,能顯著提升代碼性能與可讀性,是 C++ 工程師的基本功。