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