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

C++ 基礎核心知識體系:string 操作、智能指針、迭代器分類與 STL 容器詳解

     編輯:關於C++

一、std::string 核心操作

構造函數家族

  • string() 空串
  • string(const char* s) C 串構造
  • string(size_type n, char c) n 個 c
  • string(const string&, pos, len) 子串構造
  • string(Iter beg, Iter end) 迭代器區間構造
  • C++11:移動構造、initializer_list 構造

輸入方式

  • cin >> str:讀單詞(跳過空白)。
  • getline(cin, str):讀整行(含空格,丟棄 \n)。
  • getline(cin, str, delim):自定義分隔符。

關鍵成員函數

  • 容量:size(), capacity(), reserve(), shrink_to_fit()。
  • 訪問:operator[], at(), front(), back(), data(), c_str()。
  • 修改:push_back, append, insert, erase, replace, clear。
  • 查找:find, rfind, find_first_of, substr。

二、智能指針選擇指南

類型所有權語義適用場景
unique_ptr獨占所有權,不可複製,可移動單一擁有者、RAII、工廠函數返回
shared_ptr共享所有權,引用計數多擁有者、觀察者模式、STL 容器存指針
weak_ptr弱引用,不增加計數打破循環引用、緩存、觀察者
auto_ptr (C++11 棄用)轉移所有權的複製語義僅維護舊代碼

三、迭代器五大類別

類別能力典型容器
輸入迭代器單向只讀,單遍歷istream_iterator
輸出迭代器單向只寫ostream_iterator
前向迭代器單向讀寫,多遍歷forward_list
雙向迭代器雙向讀寫,++/--list, map, set
隨機訪問迭代器雙向 + 算術運算 +n, -n, []vector, deque, string, array

能力遞增:隨機訪問 > 雙向 > 前向 > 輸入/輸出。

四、STL 容器速查

序列容器

  • vector:動態陣列,隨機訪問,尾部增刪 O(1) 平攤。
  • deque:雙端隊列,首尾增刪 O(1),隨機訪問。
  • list:雙向鏈表,任意位置增刪 O(1),無隨機訪問。
  • forward_list:單向鏈表,極省記憶體。
  • array:固定大小陣列,聚合類型,無擴容。

容器適配器

  • stack:LIFO,底層默認 deque。
  • queue:FIFO,底層默認 deque。
  • priority_queue:最大堆,底層 vector。

關聯容器(紅黑樹)

  • map/set:鍵唯一,有序。
  • multimap/multiset:鍵可重複。

無序關聯容器(哈希表)

  • unordered_map/set/multimap/multiset:平均 O(1),無序。

五、實用技巧

  • emplace_back/emplace 原地構造,避免臨時對象。
  • reserve 預分配 vector/string 容量,減少擴容拷貝。
  • 範圍 for 配合 auto& 遍歷,避免拷貝。
  • algorithm 標準算法(sort, find_if, transform)優於手寫循環。

總結

熟練掌握 string、智能指針、迭代器體系與容器特性,是寫出高效、安全、現代 C++ 代碼的基石。建議以「值語義為主、引用語義為輔、裸指針零使用」為原則進行工程實踐。

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