在C++程序开发中,字符串string、向量vector和数组是三种最基础也最常用的序列容器。它们都能存储一组有序的数据,但在管理方式、灵活性和适用场景上有明显差异。掌握它们的特点,是写出健壮代码的前提。

一、字符串string的基本用法
string是标准库提供的字符序列封装,自动管理内存,支持常见的拼接、查找和比较操作。相比C风格字符数组,它更安全也更易用。
#include <iostream>
#include <string>
int main() {
std::string s1 = "hello";
std::string s2 = "world";
std::string s3 = s1 + " " + s2; // 拼接字符串
std::cout << s3 << std::endl;
std::cout << "长度: " << s3.size() << std::endl;
return 0;
}
二、向量vector的动态特性
vector是一个动态数组,在运行时可以按需增长或收缩。它通过连续内存存储元素,并自动处理扩容逻辑,适合元素数量不固定的场景。
#include <iostream>
#include <vector>
int main() {
std::vector<int> nums;
nums.push_back(10); // 添加元素
nums.push_back(20);
for (int i = 0; i < nums.size(); i++) {
std::cout << nums[i] << " ";
}
return 0;
}
三、原生数组的特点与局限
原生数组在栈或全局区分配固定大小的内存,访问速度极快,但大小必须在编译期确定,且容易越界。现代C++中建议优先使用vector替代。
#include <iostream>
int main() {
int arr[3] = {1, 2, 3}; // 固定长度为3
for (int i = 0; i < 3; i++) {
std::cout << arr[i] << " ";
}
return 0;
}
四、三者对比与选择建议
我们可以通过下面的表格快速了解它们的核心差异:
| 类型 | 大小是否固定 | 内存管理 | 典型用途 |
|---|---|---|---|
| string | 动态 | 自动 | 文本处理 |
| vector | 动态 | 自动 | 数量不定的同类型数据 |
| 数组 | 固定 | 手动或静态 | 性能敏感且大小已知 |
使用建议
- 处理文字内容时,直接使用string,不要手动操作字符数组。
- 需要存储多个同类型对象且数量未知,优先选择vector。
- 仅在对性能有极致要求且长度编译期已知的底层场景,才考虑原生数组。
记住:清晰性和安全性通常比微小的性能提升更重要,标准库容器已经足够高效。
五、常见错误提醒
使用数组时,不要越界访问;使用vector时,避免在循环中频繁调用引起重新分配的操作而不预留空间;使用string时,注意空字符串与null的区别。合理利用std::vector和std::string能大幅降低bug率。
C++_stringC++_vectorC++_array修改时间:2026-07-26 18:06:21