2012-07-23 60 views
1

我在C向量代码++这样的:的std ::载体插入错误

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,我不知道矢量在标准应该有插入,我错过了什么?

running_jobs = vector<boost::tuple<ppa::Node*, ppa::Node*, ppa::Node*, bool> > running_jobs; 

line 223 running_jobs.insert(running, wait.end()); 
+2

哪一行是223 – 111111 2012-07-23 12:16:34

+0

我们需要查看'running_jobs'的定义。看起来你正在混合类型。错误表示没有配件'insert'成员函数。 – pmr 2012-07-23 12:16:53

+0

这很可能是因为'running_jobs'的* type *和'wait'的* type *不同! – Nim 2012-07-23 12:17:20

回答

3

问题确实是您到insert电话。看看
http://www.cplusplus.com/reference/stl/vector/insert/

你必须告诉insert哪里插入running_jobs。可能类似于:

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

是的,它做到了,谢谢(: – 2012-07-23 12:34:29

1

什么是running_jobs?我把它作为一个向量。还有对象“等待”我认为它是一个矢量

呼叫

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

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

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

希望这个作品

+0

运行是从std ::分区返回初始化的迭代器... – ForEveR 2012-07-23 12:25:41

+0

Nope,running_jobs.insert(wait.end(),running);同样的事情,main.cpp:223:错误:没有匹配函数调用'std :: vector , std :: allocator 2012-07-23 12:27:57