为什么 string::begin 存在?
Why does string::begin exist?
如果我没理解错的话,string::begin
returns 指向字符串中第一个元素的指针。如果是这样,我们为什么不直接使用 &str
来获取指针。
是否存在使用 begin
更好的情况,还是我误解了它的功能?
std::string::begin()
returns 指向字符串第一个字符的迭代器。迭代器是指针的泛化,充当容器和算法之间的粘合剂,因此可以将两者解耦。
If I understand correctly, string::begin
returns the pointer to the first element in the string.
不,它 returns 一个 迭代器 到字符串中的第一个元素。它有助于 std::string
与设计用于标准容器的语言结构(认为模板)兼容。
why wouldn't we just use &str
to get the pointer.
一方面,那不是字符串第一个元素的地址吗?假设 str
是一个 std::string
类型的变量,它是一个对象的地址,除其他外,(通常)包含指向字符串第一个元素的指针。 (如果你指的是 c_str()
成员函数,那么可以这样做,但它不是一个特别清晰和可读的语法。)
如果我没理解错的话,string::begin
returns 指向字符串中第一个元素的指针。如果是这样,我们为什么不直接使用 &str
来获取指针。
是否存在使用 begin
更好的情况,还是我误解了它的功能?
std::string::begin()
returns 指向字符串第一个字符的迭代器。迭代器是指针的泛化,充当容器和算法之间的粘合剂,因此可以将两者解耦。
If I understand correctly,
string::begin
returns the pointer to the first element in the string.
不,它 returns 一个 迭代器 到字符串中的第一个元素。它有助于 std::string
与设计用于标准容器的语言结构(认为模板)兼容。
why wouldn't we just use
&str
to get the pointer.
一方面,那不是字符串第一个元素的地址吗?假设 str
是一个 std::string
类型的变量,它是一个对象的地址,除其他外,(通常)包含指向字符串第一个元素的指针。 (如果你指的是 c_str()
成员函数,那么可以这样做,但它不是一个特别清晰和可读的语法。)