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 容器,并清除原容器外的元素。使用运算符“=”时需要注意,原容器中的元素引用和指针将变得无效。