为什么string :: begin存在?

问题描述 投票:2回答:2

如果我理解正确,string::begin将返回指向字符串中第一个元素的指针。如果真是这样,我们为什么不只使用&str来获取指针。

在某些情况下使用begin更好,还是我误解了它的功能?

c++ stl iterator stdstring
2个回答
5
投票

如果我理解正确,string::begin将返回指向字符串中第一个元素的指针。

否,它向字符串中的第一个元素返回iterator。它有助于使std::string与旨在与标准容器一起使用的语言构造(思维模板)兼容。

为什么我们不只使用&str来获取指针。

有一件事,那不是字符串第一个元素的地址吗?假设strstd::string类型的变量,那将是对象的地址,该对象的地址(通常)是指向字符串的第一个元素的指针。 (如果您的意思是c_str()成员函数,则可以这样做,但是它不是一种特别清晰易懂的语法。)


3
投票

std::string::begin()将迭代器返回到字符串的第一个字符。迭代器是指针的一般化,并且充当容器和算法之间的粘合剂,因此可以将两者分离。

© www.soinside.com 2019 - 2024. All rights reserved.