C++ STL中的unordered_multiset运算符=

C++ STL中的unordered_multiset运算符=

C++ STL中,unordered_multiset 是一个无序的多重集合容器,它允许保存相同元素的多个副本。对于 unordered_multiset 容器,有一个运算符“=”,可以用于将一个 unordered_multiset容器的元素赋值给另一个 unordered_multiset 容器。

unordered_multiset 容器的定义和初始化

在使用 unordered_multiset 容器前,需要先引入头文件 unordered_multiset,并使用命名空间std。

#include <unordered_multiset>
using namespace std;

unordered_multiset 容器的定义方式如下:

unordered_multiset <数据类型> 容器名;

以下是用整数类型定义一个unordered_multiset 容器的例子:

#include <unordered_multiset>
using namespace std;

int main() {
    unordered_multiset<int> mySet;
    // ...
}

向 unordered_multiset 容器中添加元素时,有以下几种方式:

使用 insert() 函数添加元素:

unordered_multiset <数据类型> 容器名;
容器名.insert(元素1);
容器名.insert(元素2);

例如:

#include <iostream>
#include <unordered_multiset>

using namespace std;

int main() {
    unordered_multiset<int> mySet;
    mySet.insert(5);
    mySet.insert(5);
    mySet.insert(7);
    mySet.insert(8);
    mySet.insert(2);
    mySet.insert(2);
    mySet.insert(1);

    for (auto it = mySet.begin(); it != mySet.end(); it++ ) {
        cout << " " << *it;
    }
    cout << endl;
    return 0;
}

该代码会输出:

2 2 5 5 1 7 8

使用 initializer_list 向容器中添加元素:

unordered_multiset <数据类型> 容器名 {元素1, 元素2, ...};

例如:

#include <iostream>
#include <unordered_multiset>

using namespace std;

int main() {
    unordered_multiset<int> mySet {5, 5, 7, 8, 2, 2, 1};

    for (auto it = mySet.begin(); it != mySet.end(); it++ ) {
        cout << " " << *it;
    }
    cout << endl;
    return 0;
}

该代码会输出:

2 2 5 5 1 7 8

unordered_multiset 容器中的运算符=

unordered_multiset 容器的运算符“=”可以将一个 unordered_multiset 容器中的元素复制给另一个 unordered_multiset 容器。

下面是 unordered_multiset 容器中的运算符=的定义:

unordered_multiset& operator=(const unordered_multiset& umset) noexcept;

该运算符可以被重载,以便将 unordered_multiset 容器赋值为其他类型的未排序多值集合。

注意:在使用运算符=时,原unordered_multiset容器中的元素将被删除,并且其引用和指针将变得无效。

下面是一个实例:

#include <iostream>
#include <unordered_multiset>
using namespace std;

int main() {
    // 定义两个unordered_multiset容器
    unordered_multiset<int> mySet1 {5, 5, 7, 8, 2, 2, 1};
    unordered_multiset<int> mySet2;

    // 使用运算符=将mySet1中的元素赋值给mySet2
    mySet2 = mySet1;

    // 输出mySet2中的元素
    for (auto it = mySet2.begin(); it != mySet2.end(); it++ ) {
        cout << " " << *it;
    }
    cout << endl;

    return 0;
}

该代码会输出:

2 2 5 5 1 7 8

结论

unordered_multiset 容器中的运算符“=”可以将 unordered_multiset 容器中的元素复制给另一个 unordered_multiset 容器,并清除原容器外的元素。使用运算符“=”时需要注意,原容器中的元素引用和指针将变得无效。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程

C++ 教程