C++ 字符串类的实现

C++ 字符串类的实现,c++,C++,我对使用类字符串的rbegin()、rend()和operator++实现反向迭代器感兴趣,我在google中找不到它,我该怎么做?提前感谢您提供的任何帮助或链接,您可以查看实现头文件。(例如,Linux上的/usr/include/c++/4.1.2/string)。这通常只会在真正的内容所在的位置拉入一堆其他头,例如bits/basic_string.h 我不知道它们在哪里,例如VC++,但通常你可以通过创建一个std::string,选择它并按F12键,让Intellisense找到它。在

我对使用类字符串的rbegin()、rend()和operator++实现
反向迭代器感兴趣,我在google中找不到它,我该怎么做?提前感谢您提供的任何帮助或链接,您可以查看实现头文件。(例如,Linux上的
/usr/include/c++/4.1.2/string
)。这通常只会在真正的内容所在的位置拉入一堆其他头,例如
bits/basic_string.h


我不知道它们在哪里,例如VC++,但通常你可以通过创建一个
std::string
,选择它并按F12键,让Intellisense找到它。

在STL中有一个基本的实现

它由要还原的
迭代器
模板化

这个想法很简单,如果你看一系列:

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

与使用此实现的纯反向迭代器相比,需要做额外的工作,因为对于每次取消引用,您都需要复制您持有的迭代器,将其减量,然后取消引用。

双向迭代器的反向迭代是在
std::reverse_迭代器
模板中实现的

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()); }
    //...
};
模板
类基本字符串
{
公众:
typedef std::reverse_迭代器const_reverse_迭代器;
typedef std::reverse_迭代器reverse_迭代器;
反向迭代器rbegin(){返回反向迭代器(this->end());}
const_reverse_迭代器rbegin()const{return const_reverse_迭代器(this->end());}
反向迭代器rend(){返回反向迭代器(this->begin());}
const_reverse_iterator rend()const{return const_reverse_iterator(this->begin());}
//...
};

(复制自GCC的实现。)

对于VC++,它类似于C:\Program Files\Microsoft Visual Studio 9.0\VC\include(只需搜索标题名)。