0

可能是一个非常愚蠢的问题,但已经很晚了,我累了,晚餐也快准备好了......

这是我拥有的一种方法,它接受一个向量并将其中的值分配给另一个先前定义为 ivar 的向量。问题是它在最后一个方法调用上抛出一个错误,说:No matching member function for call to 'insert'

这是代码,火焰:

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

2 回答 2

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 =来复制内容呢?

于 2012-04-14T19:19:06.733 回答
1
void Symbol::setEncodedData( vector<int>* ec )
{
    Symbol::encodedSymbol = *ec;
}

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

void Symbol::setEncodedData(vector<int> const& ec)
{
    Symbol::encodedSymbol = ec;
}
于 2012-04-14T20:14:01.437 回答