C ++中的Multiset示例| C ++多集程序

C ++中的Multiset示例| C ++ Multisets Program是今天的主题。多集是与集非常相似的容器。多中心化的主要区别在于,它与集合不同,可以有多个具有相同值的元素。多集容器以特定的特定顺序存储项目。在多中心化,我们可以通过指定start迭代器和end迭代器来擦除1个以上的元素。

内容概述

  • 1个C ++中的多重集
  • 2多集语法
  • 3种多容器属性
  • 4一些重要的多集方法
    • 4.1 begin()
    • 4.2结束()
    • 4.3 empty()
    • 4.4 max_size()
    • 4.5尺寸()
  • 5 C ++中的Multiset程序
  • C ++中的6种更多功能
  • 7结论
  • 8篇推荐文章

C ++中的多重集

多重集是类似于集合的关联容器的类型,不同之处在于多个项目可以具有相同的值。

当通过键集访问单个元素时,多集容器比unordered_sets容器要慢,但是集的优点是它们允许基于容器中元素的顺序直接对子集进行迭代。

由于多集支持插入和删除操作,因此可以动态处理存储需求。

对于多集,通过使用键比较功能compare进行排序。搜索,插入和删除等操作具有对数复杂性。

比较等效项的顺序是插入顺序,并且从C ++ 11的引入开始就没有改变。

多集的主要要求是容器,感知分配器容器,关联容器和可逆容器。

多重集的主要应用是在二进制搜索树中。

一旦将多中心化的元素的值插入到容器中,即它们始终是恒定的,则无法对其进行修改。但是可以执行插入和删除操作。

多集语法

template
class alloc = allocator>
> class multiset;

其中X = multiset :: key_type / value类型。

使用多集时,必须包含集的头文件,该文件是

#包括 使多功能的所有功能都可操作。

多集容器属性

1 –关联:它们的主要参考元素出现在关联容器中,而不是它们在容器中的绝对位置。

2-已排序:多集容器中的项目始终遵循顺序。根据特定的顺序,为所有插入的元素提供在容器中的位置。

3-多个等效键:此属性表明多中心化存在的多个项目可以具有相同的键。

4-了解分配器:此容器通常使用分配器对象来动态处理存储需求。

多集的一些重要方法

开始()

它将迭代器返回到多中心化存在的第一个元素。

结束()

它将迭代器返回到理论元素,该理论元素在多中心化的最后一个元素之后。

空()

它返回多集是否为空。

max_size()

它返回多重集可以容纳的最大元素数。

尺寸()

它返回多重中心化的元素数。

C ++中的Multiset程序

Q1-编写一个程序以在多中心化插入一个元素。

#include 
#include 

using namespace std;

int main()
{
  multiset> set_1;

  set_1.insert(502);
  set_1.insert(502);
  set_1.insert(506);
  set_1.insert(507);
  set_1.insert(555);

  multiset>::iterator iterator_1;
  cout << "nThe multiset elements are: ";
  for (iterator_1 = set_1.begin(); iterator_1 != set_1.end(); ++iterator_1)
  {
    cout << "t" << *iterator_1;
  }
};

查看输出。

C ++中的Multiset程序

Q2-编写一个程序以在集合中插入五个元素,然后删除两个项目,然后打印该集合。

#include 
#include 

using namespace std;

int main()
{
  multiset> set_1;

  set_1.insert(502);
  set_1.insert(502);
  set_1.insert(506);
  set_1.insert(507);
  set_1.insert(555);

  multiset>::iterator iterator_1;
  cout << "nThe multiset elements before deletion are: ";
  for (iterator_1 = set_1.begin(); iterator_1 != set_1.end(); ++iterator_1)
  {
    cout << "t" << *iterator_1;
  }

  set_1.erase(506);
  set_1.erase(555); //deleting elements

  cout << "nThe multiset elements after deletion are: ";
  for (iterator_1 = set_1.begin(); iterator_1 != set_1.end(); ++iterator_1)
  {
    cout << "t" << *iterator_1;
  }
};

查看输出。

C ++示例中的多集

在第二个示例中,非常仔细地观察输出,因为删除前的元素也出现在第二行中。 (您可能会错过这一点)删除后,那里只有三个项目,包括重复的元素。

C ++中多集的更多功能

  1. 对insert(const g):向多重集添加新元素“ g”。
  2. 迭代器插入(迭代器位置,常量g):在迭代器指向的位置添加新元素“ g”。
  3. 擦除(迭代器位置):在迭代器指向的位置移除元素。
  4. 擦除(常量g):从多重中心化删除值``g''。
  5. clear():从多重中心化删除所有元素。
  6. key_comp()/ value_comp():返回一个对象,该对象确定多重集合中元素的排序方式(默认为'<')。
  7. find(const g):如果存在,则返回多中心化元素“ g”的迭代器,否则返回迭代器结束。
  8. count(const g):返回与多中心化元素``g''匹配的次数。
  9. lower_bound(const g)–将迭代器返回到等效于“ g”的第一个项目,或者绝对不会出现在多中心化项目“ g”之前。
  10. upper_bound(const g):将迭代器返回到等同于'g'的第一个项目,或者肯定会在多重中心化的'g'项之后。
  11. multiset :: swap():该函数用于交易所两个多集的内容,但是集的类型必须相同,尽管大小可能会有所不同。
  12. multiset :: operator():此运算符用于通过替换现有内容将新内容分配给容器。
  13. multiset :: emplace():该函数用于将新元素插入多集容器。
  14. multiset equal_range():返回对的迭代器。该对是指包括容器中所有具有等于k的键的项的范围。
  15. multiset :: emplace_hint():在多重中心化插入​​一个新元素。
  16. multiset :: rbegin():返回一个反向迭代器,指向多重集容器中的最后一个元素。
  17. multiset :: rend():返回一个反向迭代器,指向多重集合容器中第一个元素之前的理论元素。
  18. multiset :: cbegin():返回一个常量迭代器,指向容器中的第一个元素。
  19. multiset :: cend():返回一个常量迭代器,指向容器中最后一个元素之后的位置。
  20. multiset :: crbegin():返回一个常量反向迭代器,指向容器中的最后一个元素。
  21. multiset :: crend():返回一个常量反向迭代器,该迭代器指向容器中第一个元素之前的位置。
  22. multiset :: get_allocator():返回与多集关联的分配器对象的副本。

结论

多集是C ++ STL(标准模板库)的一部分。

多重集是诸如Set之类的关联容器,用于存储排序后的值(该值本身是T类型的键),但是与Set一样,它存储唯一键,多重集可以具有重复键。

默认情况下,它使用<运算符比较键。

最后,C ++中的Multiset示例| C ++ Multiset程序结束。

推荐的帖子

C ++优先队列程序

C ++示例中的队列

C ++示例中的双端队列

带有示例的C ++数组教程

C ++堆栈示例

资讯来源:由0x资讯编译自APPDIVIDEND,版权归作者Ankit Lathiya所有,未经许可,不得转载
你可能还喜欢