📜  C++ 中的多组向量与示例

📅  最后修改于: 2022-05-13 01:55:48.364000             🧑  作者: Mango

C++ 中的多组向量与示例

什么是多集?

C++ 中的多重集是一个关联容器,可以按特定顺序保存多个元素。与集合不同,多重集合可以包含同一元素的多个副本。

与多重集相关的函数:

  • begin() 返回一个迭代器,指向多重集中的第一个元素。
  • end() 返回一个迭代器,指向多重集中最后一个元素之后的理论元素。
  • size() 返回多集中元素的数量。
  • max_size() 返回多重集可以容纳的最大元素数。
  • empty() 返回多重集是否为空。

什么是向量?

在 C++ 中,向量与动态数组相同,它们能够在需要时自行调整大小。向量只能包含同质元素。简而言之,向量可能仅包含特定数据类型的元素,并且需要在声明时指定向量的数据类型。

与向量相关的函数:

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

多组向量

向量的多重集是一个多重集,其中每个元素都是一个向量本身。如果两个向量的对应元素相等,则认为两个向量相等。多重集可以包含多次出现的相同向量以及其他也按排序顺序出现的向量。

句法:

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

C++
// C++ program to demonstrate the
// working of multiset of vectors
#include 
using namespace std;
 
// Function to iterate over
// vector elements
void printVector(vector myVector)
{
  cout << "[ ";
  for(auto element : myVector)
    cout << element << ' ';
  cout << "]\n";
}
 
// Function to iterate over multiset
// elements
void print(multiset> &multisetOfVectors)
{
  for (auto it = multisetOfVectors.begin();
       it != multisetOfVectors.end();
       it++)
  {
    // Each element is a vector
    printVector(*it);
  }
}
 
// Driver code
int main()
{
  // Declaring a multiset of vectors
  // A vector is of integer type
  multiset> multisetOfVectors;
 
  // Initializing vectors
  vector myVector1 {3, 6, 9, 10};
  vector myVector2 {5, 10, 11, 7};
  vector myVector3 {3, 6, 9, 10};
  vector myVector4 {5, 10, 15};
  vector myVector5 {50, 20, 30, 40};
 
  // Inserting vectors into multiset
  multisetOfVectors.insert(myVector1);
  multisetOfVectors.insert(myVector2);
  multisetOfVectors.insert(myVector3);
  multisetOfVectors.insert(myVector4);
  multisetOfVectors.insert(myVector5);
 
  // Calling print function
  print(multisetOfVectors);
 
  return 0;
}


C++
// C++ program to demonstrate the
// working of multiset of vectors
#include 
using namespace std;
 
// Function to iterate over vector elements
void printVector(vector myVector)
{
  cout << "[ ";
  for(auto element : myVector)
    cout << element << ' ';
  cout << "]\n";
}
 
// Function to iterate over multiset
// elements
void print(multiset>
           &multisetOfVectors)
{
  for (auto it = multisetOfVectors.begin();
       it != multisetOfVectors.end();
       it++)
  {
    printVector(*it);
  }
}
 
// Driver code
int main()
{
  // Declaring a multiset of vectors
  // A vector is of string type
  multiset>
  multisetOfVectors;
 
  // Initializing vectors
  vector myVector1
  {"GeeksforGeeks", "GFG"};
  vector myVector2
  {"Python", "Swift", "R"};
  vector myVector3
  {"C", "C++"};
  vector myVector4
  {"GeeksforGeeks", "GFG"};
  vector myVector5
  {"PHP", "HTML"};
 
  // Inserting vectors into multiset
  multisetOfVectors.insert(myVector1);
  multisetOfVectors.insert(myVector2);
  multisetOfVectors.insert(myVector3);
  multisetOfVectors.insert(myVector4);
  multisetOfVectors.insert(myVector5);
 
  // Calling print function
  print(multisetOfVectors);
 
  return 0;
}


输出:

解释:

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

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

C++

// C++ program to demonstrate the
// working of multiset of vectors
#include 
using namespace std;
 
// Function to iterate over vector elements
void printVector(vector myVector)
{
  cout << "[ ";
  for(auto element : myVector)
    cout << element << ' ';
  cout << "]\n";
}
 
// Function to iterate over multiset
// elements
void print(multiset>
           &multisetOfVectors)
{
  for (auto it = multisetOfVectors.begin();
       it != multisetOfVectors.end();
       it++)
  {
    printVector(*it);
  }
}
 
// Driver code
int main()
{
  // Declaring a multiset of vectors
  // A vector is of string type
  multiset>
  multisetOfVectors;
 
  // Initializing vectors
  vector myVector1
  {"GeeksforGeeks", "GFG"};
  vector myVector2
  {"Python", "Swift", "R"};
  vector myVector3
  {"C", "C++"};
  vector myVector4
  {"GeeksforGeeks", "GFG"};
  vector myVector5
  {"PHP", "HTML"};
 
  // Inserting vectors into multiset
  multisetOfVectors.insert(myVector1);
  multisetOfVectors.insert(myVector2);
  multisetOfVectors.insert(myVector3);
  multisetOfVectors.insert(myVector4);
  multisetOfVectors.insert(myVector5);
 
  // Calling print function
  print(multisetOfVectors);
 
  return 0;
}

输出:

解释:

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