C++ string 的使用与模拟实现
一、标准库中的 string 类
string 是 C++ 中最常用的类之一,但很多人对其底层实现并不熟悉。本文将带你掌握核心用法,并深入模拟实现其关键功能,理解深浅拷贝等概念。
1.1 auto 和范围 for
在深入学习之前,先回顾两个 C++11 的小语法,这对后续遍历容器很有帮助。
auto 关键字 C++11 中,auto 不再仅仅是存储类型指示符,而是作为新的类型指示符,让编译器在编译期推导变量类型。
int main() {
int a = 10;
auto b = a;
auto c = 'a';
return 0;
}
用 auto 声明指针时,auto 和 auto* 没有区别;但声明引用时必须加 &:
int main() {
int x = 10;
auto y = &x; // 指针
auto* z = &x; // 指针
auto& m = x; // 引用
return 0;
}
注意:同一行声明多个变量时,它们必须是相同类型,否则编译器报错。auto 不能直接用来声明数组,也不能作为函数参数(返回值需谨慎)。
范围 for 循环 C++11 引入了基于范围的 for 循环,简化了集合遍历。其底层本质是迭代器的封装。
迭代器简单解释: 迭代器在行为上类似指针,用于统一遍历各种数据结构,是 STL 的基石。
#include <iostream>
#include <string>
using namespace std;
int main() {
array[] = {, , , , };
( i = ; i < (array) / (array[]); ++i) {
array[i] *= ;
}
(& e : array) e *= ;
( e : array) cout << e << ;
cout << endl;
;
( ch : str) {
cout << ch << ;
}
cout << endl;
;
}


