c++ - 如何将参数传递给 std::vector::insert()?

标签 c++

我是类的新手,所以我不能将参数传递给 std::vector::insert():

//myclass.h
class myClass//: private std::vector<char>
{ 
private:
typedef char mytype;
typedef std::vector<mytype> vector;
vector Store;

...

/* iterators */
const vector::const_iterator begin() const
{
    return Store.begin() ;
}
const vector::const_iterator end() const
{
    return Store.end();
}
vector::iterator begin()
{
    return Store.begin() ;
}
vector::iterator end()
{
    return Store.end();
}
template<class Iter>
void insert(vector::const_iterator c, Iter a, Iter b)
{
    Store.insert(c,a,b); //error
}

当我编译包含该 .h 文件的 .cpp 时出错。 谁能帮帮我?提前致谢。

[Error] no matching function for call to 'std::vector::insert(std::vector::const_iterator&, __gnu_cxx::__normal_iterator >&, __gnu_cxx::__normal_iterator >&)'

最佳答案

我相信,您使用的是 C++11 之前的编译器。在 C++11 之前,vector::insert 将第一个迭代器作为非常量 - 而您的函数使用 const_iterator。

升级编译器或更改插入的签名以接受非常量迭代器。

关于c++ - 如何将参数传递给 std::vector::insert()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33680551/

相关文章:

c++ - 使用时 0xcdcdcdcd->

c++ - 类中的 fstream 语法

c++ - 尝试使用已删除的函数

C++: 0xC0000005: 访问冲突写入位置 0x00000000

c++ - 我们如何在线程中使用参数

c++ - 帮助 map C++

c++ - fork 和管道 C++ 奇怪的输出

C++:如何制作作为引用返回的 char 的拷贝?

c++ - 断言与 std::function 兼容的函数指针

c++ - “关键字”不是命名空间名称