C++中的向量Multiset及示例

C++中的向量Multiset及示例

什么是Multiset?

在C++中,Multiset是一种可以按照特定顺序承载多个元素的关联容器。与set不同,multiset可以承载同一元素的多个副本。

与Multiset相关的函数:

  • begin() : 返回multiset中第一个元素的迭代器。
  • end() : 返回迭代器,指向multiset中最后一个元素后面的理论元素。
  • size() : 返回multiset中元素的数量。
  • max_size() : 返回multiset可以承载的最大元素数量。
  • empty() : 返回multiset是否为空。

什么是向量?

在C++中,向量与动态数组相同,具有在需要时调整大小的能力。向量只能包含同种类型的元素。简单来说,向量只能包含一种特定数据类型的元素,并且必须在声明向量时指定数据类型。

与向量相关的函数:

  • begin() : 返回指向向量中第一个元素的迭代器。
  • end() : 返回指向向量中最后一个元素后面的理论元素的迭代器。
  • rbegin() : 返回一个反向迭代器,指向向量中的最后一个元素(倒序开头)。它从最后一个元素移动到第一个元素。
  • rend() : 返回一个反向迭代器,指向向量中第一个元素之前的理论元素(视为反向结尾)。
  • cbegin() : 返回指向向量中第一个元素的常量迭代器。
  • cend() : 返回指向向量中最后一个元素后面的理论元素的常量迭代器。
  • crbegin() : 返回一个指向向量中最后一个元素(倒序开头)的常数反向迭代器。它从最后一个元素移动到第一个元素。
  • crend() : 返回一个指向向量中第一个元素之前的理论元素(视为反向结尾)的常数反向迭代器。

向量的Multiset

向量的Multiset是一种Multiset,其中每个元素本身是一个向量。如果两个向量的对应元素相等,则认为它们是相等的。Multiset可以包含多个相同的向量以及其他向量,这些向量都是按排序顺序排列的。

语法:

multiset <vector<dataType>> myMultiset;

在此处,

dataType: 一种数据类型。它表示存储在myMultiset中向量的值的类型。

示例1: 在下面的C++程序中创建了一个整数向量的Multiset。

// C++程序演示多重集合向量的工作
#include <bits/stdc++.h>
using namespace std;

// 迭代矢量元素的函数
void printVector(vector<int> myVector)
{
  cout << "[ ";
  for(auto element : myVector)
    cout << element << ' ';
  cout << "]\n";
}

// 迭代多重集合元素的函数
void print(multiset<vector<int>> &multisetOfVectors)
{
  for (auto it = multisetOfVectors.begin();
       it != multisetOfVectors.end();
       it++)
  {
    // 每个元素都是一个向量
    printVector(*it);
  }
}

// 主函数
int main()
{
  // 定义多重集合向量,向量类型为整数
  multiset<vector<int>> multisetOfVectors;

  // 初始化向量
  vector<int> myVector1 {3, 6, 9, 10};
  vector<int> myVector2 {5, 10, 11, 7};
  vector<int> myVector3 {3, 6, 9, 10};
  vector<int> myVector4 {5, 10, 15};
  vector<int> myVector5 {50, 20, 30, 40};

  // 将向量插入多重集合中
  multisetOfVectors.insert(myVector1);
  multisetOfVectors.insert(myVector2);
  multisetOfVectors.insert(myVector3);
  multisetOfVectors.insert(myVector4);
  multisetOfVectors.insert(myVector5);

  // 调用print函数
  print(multisetOfVectors);

  return 0;
}  

输出:

[ 3 6 9 10 ]
[ 3 6 9 10 ]
[ 5 10 11 7 ]
[ 5 10 15 ]
[ 50 20 30 40 ]

解释:

在上面的输出中,“myVector1”和“myVector3”是相同的。这就是为什么可以在输出中看到两个相同的向量的原因。

示例2: 在下面的C++程序中,创建了一个多重集合向量的字符串。

// C++程序演示多重集合向量的工作
#include <bits/stdc++.h>
using namespace std;

// 迭代向量元素的函数
void printVector(vector<string> myVector)
{
  cout << "[ ";
  for(auto element : myVector)
    cout << element << ' ';
  cout << "]\n";
}

// 迭代多重集合元素的函数
void print(multiset<vector<string>> &multisetOfVectors)
{
  for (auto it = multisetOfVectors.begin();
       it != multisetOfVectors.end();
       it++)
  {
    printVector(*it);
  }
}

// 主函数
int main()
{
  // 定义多重集合向量,向量类型为字符串
  multiset<vector<string>> multisetOfVectors;

  // 初始化向量
  vector<string> myVector1
  {"GeeksforGeeks", "GFG"};
  vector<string> myVector2
  {"Python", "Swift", "R"};
  vector<string>myVector3
  {"C", "C++"};
  vector<string> myVector4
  {"GeeksforGeeks", "GFG"};
  vector<string> myVector5
  {"PHP", "HTML"};

  // 将向量插入多重集合中
  multisetOfVectors.insert(myVector1);
  multisetOfVectors.insert(myVector2);
  multisetOfVectors.insert(myVector3);
  multisetOfVectors.insert(myVector4);
  multisetOfVectors.insert(myVector5);

  // 调用print函数
  print(multisetOfVectors);

  return 0;
}  

输出:

[ C C++ ]   
[ GeeksforGeeks GFG ]   
[ GeeksforGeeks GFG ]   
[ PHP HTML ]   
[ Python Swift R ] 

解释:

在上面的输出中,“myVector1”和“myVector4”是相同的。这就是为什么可以在输出中看到两个相同的向量的原因。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

C++ 教程