字符串类的实现

时间:2010-10-04 11:37:29

标签: c++

我对reverse iterator with rbegin(), rend() and operator++ of the class string的实施感兴趣,我在谷歌找不到它,我该怎么办?提前感谢任何帮助或任何链接

3 个答案:

答案 0 :(得分:5)

您可以查看实现头文件。 (例如Linux上的/usr/include/c++/4.1.2/string)。这通常只会吸引真正的肉所在的其他标题,例如bits/basic_string.h

我不知道他们住在哪里,例如VC ++,但你通常可以通过创建std::string,选择它并按F12来获取Intellisense来找到它。

答案 1 :(得分:0)

STL中有reverse_iterator的基本实现。

要归还Iterator,它会被模板化。

如果你看一个范围,这个想法很简单:

[first, second, .... last]
   ^                         ^
 begin                      end
 rend                     rbegin

与使用此实现的纯反向迭代器相比,完成了额外的工作,因为对于每个解除引用,您需要复制您持有的迭代器,递减它,然后取消引用它。

答案 2 :(得分:0)

双向迭代器的反向迭代在std::reverse_iterator模板中实现。

std::string的反向迭代器的实现不会超过:

template <xxx>
class basic_string
{
public:
    typedef std::reverse_iterator<const_iterator> const_reverse_iterator;
    typedef std::reverse_iterator<iterator> reverse_iterator;

    reverse_iterator rbegin() { return reverse_iterator(this->end()); }
    const_reverse_iterator rbegin() const { return const_reverse_iterator(this->end()); }
    reverse_iterator rend() { return reverse_iterator(this->begin()); }
    const_reverse_iterator rend() const { return const_reverse_iterator(this->begin()); }
    //...
};

(复制自海湾合作委员会的实施。)