【问题标题】:Just greater element or just smaller element in a multiset只是更大的元素或只是在多重集中更小的元素
【发布时间】:2017-02-28 14:37:02
【问题描述】:

如何在多重集中找到比特定元素更大或更小的元素? 例如,我在多重集中插入​​了一些元素,现在我想找到比我已经插入的某个元素更小和更大的元素,我该怎么做?

【问题讨论】:

  • 使用multiset的lower_bound和upper_bound函数。

标签: c++ multiset


【解决方案1】:

你可以使用 lower_bound 和 upper_bound 作为 -

// multiset::lower_bound/upper_bound
#include <iostream>
#include <set>

using namespace std;

int main ()
{
  std::multiset<int> mymultiset;
  std::multiset<int>::iterator itlow,itup;

  for (int i=1; i<8; i++) mymultiset.insert(i*10); 
  itlow = mymultiset.lower_bound (30);             //       ^

  std::cout << "mymultiset less then 30:";
  for (auto it=mymultiset.begin(); it!=itlow; ++it)
    std::cout << ' ' << *it;

  cout<<endl;

  itup = mymultiset.upper_bound (40);              //             ^

  std::cout << "mymultiset greater then 40:";
  for (; itup!=mymultiset.end(); ++itup)
    std::cout << ' ' << *itup;
    cout<<endl;

  return 0;
}

【讨论】:

  • 嗨,非常感谢,我还有一个疑问。假设:itlow=mymultiset.lower_bound(30); itup=mymultiset.upper_bound(30); cout
  • lower_bound 返回一个迭代器,该迭代器指向容器中不被认为在 val 之前的第一个元素(即,它是等价的还是在之后)。所以,直到它低的所有元素都少了。但 itlow 可能包含相等的 val。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-25
  • 1970-01-01
  • 2019-07-14
  • 2014-06-18
  • 2014-10-17
  • 2011-05-04
相关资源
最近更新 更多