【问题标题】:Use String reverse iterator and iterator as same type of object (C++)使用字符串反向迭代器和迭代器作为相同类型的对象(C++)
【发布时间】:2018-10-10 10:53:23
【问题描述】:

我正在尝试对迭代器和反向迭代器使用相同的变量。但是,我找不到这样做的通用基类。 我想做这样的事情:

string a;
....
string::iterator i;
if (....)
    i = a.begin();
else
    i = a.rbegin();  //Error
....

有什么好的方法吗?

【问题讨论】:

  • 不要这样做。它们是两种不同的东西。
  • 能否将常用代码提取到模板中?
  • 没有通用的基类,所以不行。
  • 不要求iteratorreverse_iterator 是兼容的类型。它们也不一定是类,因此可能没有共同的基础。尝试确实有共同的特征/特征。

标签: c++ string iterator


【解决方案1】:

std::string::iteratorstd::string::reverse_iterator 没有通用类型。

如果您想在它们之间进行选择,您需要为每种类型设置不同的功能。最简单的方法是使用模板

例如

template <typename Iterator>
void do_stuff(Iterator begin, Iterator end)
{
    ...
}

int main()
{
    string a;
    if (...)
        do_stuff(a.begin(), a.end());
    else
        do_stuff(a.rbegin(), a.rend());
    return 0;
}

【讨论】:

    猜你喜欢
    • 2023-03-28
    • 1970-01-01
    • 2010-10-27
    • 2011-07-22
    • 2014-03-21
    • 2021-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多