C++ size与 length核心笔记
- [C++ size() 与 length() 核心笔记](#C++ size() 与 length() 核心笔记)
C++ size() 与 length() 核心笔记
一、核心结论
length():专属字符串std::string,语义就是「字符串长度」;size():所有 STL 容器通用 (vector/map/set/queue等),语义是「容器元素个数」;string中二者完全等价,返回值、用法无任何区别;- 两者都是成员函数 ,必须加括号
(),不加直接编译报错。
二、分场景用法
1. 字符串 string
两个函数通用、完全一样,推荐按语义选择:
- 求字符长度 → 用
length()更直观; - 统一容器风格 → 用
size()也没问题。
cpp
#include <string>
using namespace std;
string s = "hello";
s.length(); // ✅ 5(推荐,语义明确)
s.size(); // ✅ 5(完全等价)
2. STL 容器(vector/map/set 等)
只能用 size(),length() 直接报错 (刷题最常用,比如路径 path):
cpp
#include <vector>
using namespace std;
vector<int> path = {1,2,3};
path.size(); // ✅ 3(唯一正确写法)
// path.length(); ❌ 编译错误!容器无此函数
3. 原生数组(int a[] 等)
既不能用 .size(),也不能用 .length():
cpp
int a[10];
// a.size(); ❌ 错误
// a.length(); ❌ 错误
// 正确写法:计算数组长度
int len = sizeof(a) / sizeof(a[0]); // ✅ 10
三、高频错误纠正
错误代码
cpp
for (int i = 0; i < path.size; i++) // ❌ 两处错误
vector只能用size(),不能用length();- 成员函数必须加括号,
size是函数名不是变量。
正确代码
cpp
for (int i = 0; i < path.size(); i++) // ✅ 标准写法
四、极简记忆
字符串 length/size 通用;
容器 vector 只认 size;
原生数组啥点都没有。