当前位置: 首页>>代码示例>>C++>>正文


C++ ListNode::join方法代码示例

本文整理汇总了C++中ListNode::join方法的典型用法代码示例。如果您正苦于以下问题:C++ ListNode::join方法的具体用法?C++ ListNode::join怎么用?C++ ListNode::join使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在ListNode的用法示例。


在下文中一共展示了ListNode::join方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: findNSmallest2

void findNSmallest2(T first, T last, size_t n, V oit) {
  std::auto_ptr<ListNode> head;
  std::vector<double> buffer(n, std::numeric_limits<double>::max());
  for (; first != last; ++first) {
    double tmp = *first;
    if (head.get() == NULL) {
      head.reset(new ListNode(tmp));
    }
    else {
      // Insertion into correct place
      ListNode* currNode = head.get();
      ListNode* prevNode = NULL;
      for (;;) {
        if (tmp < currNode->value()) {
          // Insert
          if (prevNode == NULL) {
            // Inserts at start
            head.release();
            head.reset(new ListNode(tmp, currNode));
          }
          else {
            // Insert part way through
            ListNode* newnode = new ListNode(tmp, currNode);
            prevNode->join(newnode);
          }
          break;
        }
        if (currNode->next() == NULL) {
          // Reached end of list
          ListNode* newnode = new ListNode(tmp);
          currNode->join(newnode);
          break;
        } else {
          prevNode = currNode;
          currNode = currNode->next();
        }
      }
    }
    // Trim list to size
    ListNode* currNode = head.get();
    for (size_t i = 0; currNode != NULL && i < n; ++i) {
      if (i == n - 1) {
        ListNode* tmp = currNode->next();
        currNode->join(NULL);
        delete tmp;
      }
      currNode = currNode->next();
    }
  }
  for (ListNode* currNode = head.get(); currNode != NULL;
      currNode = currNode->next()) {
    *oit = currNode->value();
  }
}
开发者ID:ethr,项目名称:stlplayground,代码行数:54,代码来源:SmallestN.cpp


注:本文中的ListNode::join方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。