📅  最后修改于: 2020-10-19 07:44:53             🧑  作者: Mango
Multiset中有以下三种使用运算符=的用法:
copy(1) multiset& operator= (const multiset& x); //until C++ 11
copy (1) multiset& operator= (const multiset& x); //since C++ 11
move (2) multiset& operator= (multiset&& x); //since C++ 11
initializer list (3) multiset& operator= (initializer_list il); //since C++ 11
复制(1):-将x中的所有元素复制到多集容器中。
move(2):-将x的内容移动到多集容器中。
initializer_list(3):-将il的元素复制到多集容器中。
x:具有相同类型的多集对象。
il:初始化列表对象。
这个指针。
复印分配:尺寸线性。
移动分配:当前容器大小中的线性。
初始化程序列表分配:大小最大为对数。
与此多集容器相关的所有引用,迭代器和指针均无效。
访问所有复制的元素。
移动分配修改x。
多集容器及其所有元素均已修改。
如果引发异常,则容器处于有效状态。
让我们看一个简单的示例,将一个多重集的内容复制到另一个:
#include
#include
using namespace std;
int main(void) {
multiset s1 = {10,20,10,30};
cout << "Multiset s1 contains following elements" << endl;
for (auto it = s1.begin(); it != s1.end(); ++it)
cout << *it << endl;
multiset s2 = s1;
cout<<"\nAfter copying the elements from s1 to s2... \n";
cout << "\nMultiset s2 contains following elements" << endl;
for (auto it = s2.begin(); it != s2.end(); ++it)
cout << *it<< endl;
return 0;
}
输出:
Multiset s1 contains following elements
10
10
20
30
After copying the elements from s1 to s2...
Multiset s2 contains following elements
10
10
20
30
在上面的示例中,运算符=用于将一个多集s1的内容复制到另一个多集s2。
让我们看一个简单的示例,将一个多重集的元素移动到另一个:
#include
#include
using namespace std;
int main(void) {
multiset s1 = {'a','e','i','o','u','e','u'};
cout << "Multiset m1 contains following elements" << endl;
for (auto it = s1.begin(); it != s1.end(); ++it)
cout << *it << ", ";
multiset s2 = move(s1);
cout<<"\n\nAfter moving the elements from s1 to s2... \n";
cout << "\nMultiset s2 contains following elements" << endl;
for (auto it = s2.begin(); it != s2.end(); ++it)
cout << *it << ", ";
return 0;
}
输出:
Multiset m1 contains following elements
a, e, e, i, o, u, u,
After moving the elements from s1 to s2...
Multiset s2 contains following elements
a, e, e, i, o, u, u,
在上面的示例中,运算符=用于将一个多集s1的内容移动到另一个多集s2。
让我们看一个简单的示例,将内容从初始化列表复制到多集:
#include
#include
using namespace std;
int main(void) {
multiset s;
s = {100, 200, 300, 100, 300}; //initializer list
cout << "Multiset contains the following elements" << endl;
for (auto it = s.begin(); it != s.end(); ++it)
cout << *it << endl;
return 0;
}
输出:
Multiset contains the following elements
100
100
200
300
300
在上面的示例中, 运算符 =用于将内容从初始化列表复制到多重集m。
让我们看一个简单的例子:
#include
#include
using namespace std;
int main ()
{
int values [] = { 5 , 2 , 4 , 1 , 0 , 0 , 9 };
multiset < int > c1 ( values , values + 7 );
multiset < int > c2 ;
c2 = c1 ;
c1 = multiset < int > ();
cout<< "Size Of c1:" << c1 . size () << endl ;
cout<< "Size Of c2:" << c2 . size () << endl ;
}
输出:
Size Of c1:0
Size Of c2:7
在上面的示例中,有两个多集c1和c2。 c1有7个元素,c2为空,但是将c1分配给c2后,c1的大小变为0,c2的大小变为7。