C++中vector与string的关键应用及区别解析

📅 2026/7/4 1:59:48 👁️ 阅读次数 📝 编程学习
C++中vector与string的关键应用及区别解析

vector专题

vector的定义与特点

vector是一种动态数组容器,能够自动调整大小以容纳元素。其内存布局连续,支持随机访问。主要特点包括自动扩容、内存连续性和随机访问能力。

常用定义方式
vector<int> a; // 空vector vector<int> a(5); // 5个元素,默认初始化为0 vector<int> a(5, 1); // 5个元素,初始化为1 vector<int> a = {1,2,3,4}; // 初始化列表
核心操作函数
v.push_back(10); // 尾部插入元素 v.pop_back(); // 删除尾部元素 v.size(); // 获取元素数量 v.empty(); // 判断是否为空 v[0]; // 下标访问(无边界检查) v.at(0); // 带异常检查的访问 v.clear(); // 清空容器 v.insert(v.begin(),5); // 指定位置插入 v.erase(v.begin()); // 删除指定位置
遍历方法
// 下标遍历 for(int i=0; i<v.size(); i++) cout << v[i]; // 范围for遍历(推荐) for(auto x : v) cout << x;

string专题

string的本质特性

string是专用于字符串处理的容器,本质为动态字符数组。相比vector<char>增加了字符串专用功能,如自动以'\0'结尾、内置字符串操作等。

常用定义方式
string s1; // 空字符串 string s2 = "hello"; // 直接初始化 string s3(5, 'a'); // 重复字符构造
核心字符串操作
s += "world"; // 字符串拼接 s.size()/s.length(); // 获取长度 s.find("lo"); // 查找子串位置 s.substr(2,3); // 截取子串 s.compare("abc"); // 比较字符串 s == "abc"; // 直接比较运算符
特殊比较规则

字符串比较基于ASCII码值逐字符比较:

"ab" < "ba" // 'a'<'b' "abc" > "ab" // 长度比较 "Ab" < "ab" // 'A'<'a'
遍历方式
for(char c : s) cout << c;

核心区别对比

本质差异
  • vector:通用动态数组模板
  • string:特化的字符容器
功能特性
特性vectorstring
存储类型任意类型仅char
结尾标记隐含'\0'
专用功能无字符串操作内置find/substr/compare等
转换能力可转为string可转为vector<char>
性能考量
  • vector:通用场景下高效
  • string:针对字符操作高度优化
使用禁忌

vector不具备字符串专用操作(如find/replace),需避免误用为字符串容器。string虽基于vector<char>实现,但通过功能扩展更适合文本处理。