std::矢量插入错误

std::vector insert error

本文关键字:错误 插入 std      更新时间:2023-10-16

我在c++中有一个矢量代码,这个:

typedef  vector<boost::tuple<ppa::Node*, ppa::Node*, ppa::Node*, bool> >::iterator traveling;
traveling running = 
std::partition( wait.begin(), wait.end(), tuple_comp    );
running_jobs.insert(running, wait.end());
wait.erase( running, wait.end() );

这个错误给了我:

main.cpp:223: error: no matching function for call to ‘std::vector<boost::tuples::tuple<ppa::Node*, ppa::Node*, ppa::Node*, bool, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type>, std::allocator<boost::tuples::tuple<ppa::Node*, ppa::Node*, ppa::Node*, bool, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type> >
>::insert(threaded_function(ppa::Model_factory&, ppa::Node*)::traveling&,
__gnu_cxx::__normal_iterator<boost::tuples::tuple<ppa::Node*, ppa::Node*, ppa::Node*, bool, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type>*, std::vector<boost::tuples::tuple<ppa::Node*, ppa::Node*, ppa::Node*, bool, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type>, std::allocator<boost::tuples::tuple<ppa::Node*, ppa::Node*, ppa::Node*, bool, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type> > > >)’

这是netbeans 7.2,我不知道std中的向量应该有插入,我是不是遗漏了什么?

running_jobs = vector<boost::tuple<ppa::Node*, ppa::Node*, ppa::Node*, bool> > running_jobs;
 line 223    running_jobs.insert(running, wait.end());

问题实际上是您对insert的调用。查看
http://www.cplusplus.com/reference/stl/vector/insert/

您必须告诉insertrunning_jobs中的插入位置。可能类似于:

running_jobs.insert(running_jobs.end(), running, wait.end());

什么是running_jobs?我认为它是一个矢量。还有对象"等待",我假设它是一个矢量

用于呼叫

running_jobs.insert(running, wait.end());

是错误的。第一个参数必须是迭代器所以正确的呼叫应该是

running_jobs.insert( wait.end(), running);

希望这能起作用