c++ - 迭代器的麻烦

标签 c++ boost iterator

我有这个代码:

 if (((boost::get< 1>(*i)) == node1) || ((boost::get< 2>(i*)) == node2))
    {
        cout << "on this tuple "<< boost::get<1>(*i) << "we found it" << endl;

    }

给我这个错误,不知道它在说什么:

 main.cpp:172: error: expected primary-expression before ‘)’ token

这是检查元组 vector 以了解哪个元组具有值,如下所示:

  void threaded_function(Model_factory &mf, ppa::Node *root)
{
  boost::mutex::scoped_lock lock(result_mutex);   
  if(!running_jobs.empty())
  {
    boost::tuple<ppa::Node*, ppa::Node*, ppa::Node*, bool>  tuple = running_jobs.front();
    cout << "getting the lock for " << running_jobs.front() << " on " 
            << lock.owns_lock() << endl;
    running_jobs.pop();

    lock.unlock();
    ppa::Node *n = boost::get<0>(tuple);
    ppa::Node *n1 = boost::get<1>(tuple);
    ppa::Node *n2 = boost::get<2>(tuple);
    bool check = boost::get<3>(tuple);
   // n2->start_alignment_new(&mf);
    //n1->start_alignment_new(&mf);
     cout << " name " << n->get_name() << " has seq" << n->node_has_sequence_object<< " " << n->left_child->get_distance_to_parent()
             << " " << n->right_child->get_distance_to_parent() << " this done = " << check << endl;    
    n->start_alignment_new(&mf);



  cout << " name " << n->get_name() << " has seq " << n->node_has_sequence_object<< " " << " lock " << lock.owns_lock() << endl; 


  boost::tuple<ppa::Node*, ppa::Node*, ppa::Node*, bool>  tuple2 = wait.front();
 ppa::Node *node = boost::get<0>(tuple2);
    ppa::Node *node1 = boost::get<1>(tuple2);
    ppa::Node *node2 = boost::get<2>(tuple2);
    bool check2 = boost::get<3>(tuple);

     typedef vector<boost::tuple<ppa::Node*, ppa::Node*, ppa::Node*, bool> >::iterator vec_iter;

    for (vec_iter i = wait.begin(); i != wait.end(); ++i)
    {
    if (((boost::get< 1>(*i)) == node1) || ((boost::get< 2>(i*)) == node2))
    {
        cout << "on this tuple "<< boost::get<1>(*i) << "we found it" << endl;

    }
    else 
    {
        cout << "false found" << endl;
    }
    }

  }

最佳答案

您在第二个条件中键入了 i* 而不是 *i:

if (((boost::get< 1>(*i)) == node1) || ((boost::get< 2>(i*)) == node2)) 
                                                       ^^^^

关于c++ - 迭代器的麻烦,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11560249/

相关文章:

c++ - 读取访问冲突(this->headPtr 为 0xCDCDCDCD)

c++ - 将数组的值成对求和,直到最终得到所有值的总和

c++ - `boost::asio` `async_resolve` 在Linux上挂起,可能是什么原因?

c++ - 使用 bjam 构建两个具有相同源的库

c++ - 如何在 Windows 中获取用于特定显示器的显示适配器?

c++ - 如何返回 boost::property_tree 的叶节点

java - 使用LinkedList的迭代器打印值,在java中不断陷入无限循环

Ruby:使用 `.each` 或 `.step` ,每次迭代向前推进一个随机数量

c++ - 我可以检查 C++ 迭代器是否为 null 吗?

c++ - 未定义引用。 DSO 缺失