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