1

私はこれを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 の vector に挿入が必要なのかわかりません。何か不足していますか?

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

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

2 に答える 2

3

問題は確かに への呼び出しinsertです。http://www.cplusplus.com/reference/stl/vector/insert/をご覧ください。

insertに挿入する場所を指定する必要がありますrunning_jobs。おそらく次のようなものです:

running_jobs.insert(running_jobs.end(), running, wait.end());
于 2012-07-23T12:29:29.347 に答える
1

running_jobsとは何ですか?私はそれをベクトルと見なします。また、オブジェクト「待機」私はそのベクトルを想定しています

電話のために

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

間違っている。最初のパラメータはイテレータである必要があるため、正しい呼び出しは次のようになります。

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

これがうまくいくことを願っています

于 2012-07-23T12:24:45.000 に答える