2012-07-23 61 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