C ++中的向量不响应一种方法但对其他方法没有问题

时间:2012-04-14 18:57:58

标签: c++ stl vector

可能是一个极其愚蠢的问题,但现在已经很晚了,我已经累了,晚餐已经准备好了....

这是我有一个方法,它接受一个向量并将其中的值分配给另一个先前定义为ivar的向量。 问题是它在最后一个方法调用上抛出一个错误:没有匹配的成员函数来调用'insert'

这是代码,火焰:

void Symbol::setEncodedData( vector<int>* ec )
{
Symbol::encodedSymbol.clear( );
Symbol::encodedSymbol.resize( ec->size( ) );
Symbol::encodedSymbol.insert( 0, ec->begin( ), ec->end( ) );
}

2 个答案:

答案 0 :(得分:2)

您的参数错误,0不是有效的迭代器。可能的候选人是:

iterator insert ( iterator position, const T& x );
    void insert ( iterator position, size_type n, const T& x );
template <class InputIterator>
    void insert ( iterator position, InputIterator first, InputIterator last );

为什么不简单地使用operator =复制内容?

答案 1 :(得分:1)

void Symbol::setEncodedData( vector<int>* ec )
{
    Symbol::encodedSymbol = *ec;
}

但是你为什么要使用指针参数?

void Symbol::setEncodedData(vector<int> const& ec)
{
    Symbol::encodedSymbol = ec;
}