c++ - 在模板类中使用 vector 迭代器

标签 c++ templates stl iterator

我正在尝试在我正在创建的模板类中创建一个 vector 迭代器。以下是故障码。

void editor<T>::insert()
{   
        typedef typename std::vector<T>::const_iterator itr;
        itr it;
        it = this->buffer.begin();

        for(int i = 0; i < line_num -1; ++i)
        {   
            ++it;
        }

        this->buffer.insert(it, user_text);
        std::cout << "Cool, Your new line has been inserted." << '\n';
    }
    std::cout << '\n';
}

我收到以下编译错误:

error: no match for ‘operator=’ in ‘it = ((editor<std::basic_string<char> >*)this)->editor<std::basic_string<char> >::buffer.std::vector<_Tp, _Alloc>::begin [with _Tp = std::vector<std::basic_string<char>, std::allocator<std::basic_string<char> > >, _Alloc = std::allocator<std::vector<std::basic_string<char>, std::allocator<std::basic_string<char> > > >, std::vector<_Tp, _Alloc>::iterator = __gnu_cxx::__normal_iterator<std::vector<std::basic_string<char>, std::allocator<std::basic_string<char> > >*, std::vector<std::vector<std::basic_string<char>, std::allocator<std::basic_string<char> > >, std::allocator<std::vector<std::basic_string<char>, std::allocator<std::basic_string<char> > > > > >, typename std::_Vector_base<_Tp, _Alloc>::_Tp_alloc_type::pointer = std::vector<std::basic_string<char>, std::allocator<std::basic_string<char> > >*]()’ 

我感觉编译器对我上面的 typedef 语句感到困惑,但这是我看到的声明正确迭代器的方式,但由于某种原因它无法正常工作。有什么想法吗?

最佳答案

如果bufferstd::vector< std::vector<T> >然后 buffer.begin()std::vector< std::vector<T> >::iteratorconst_iterator , 所以你的 typedef不匹配。

关于c++ - 在模板类中使用 vector 迭代器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10135632/

相关文章:

c++ - boost 分词器/字符分隔符

c++ - 如何将多个字符串变量分配给一个函数?

c++ - 输入整数的最快方法

c++ - 如何在不同模板类的模板类中使用嵌套模板类

c++ - 清除双端队列指针的最佳方法是什么?

c++ - 映射 vector 的时间复杂度是多少?

c++ - std::map::find 不起作用

c++ - 为什么 C++ 找不到 GLM header ?

php - 显示 Woocommerce 我的帐户订单而不是仪表板

c++ - 模板静态成员定义取决于传递给链接器的顺序