set中有以下三种使用operator =的用法:
Operator=用于通过替换旧内容(或复制内容)将新内容分配给集合容器,并在必要时修改大小。
Operator=用于将一个set的容器中的内容移动到另一个容器中,并在必要时修改大小。
Operator=用于将元素从初始值设定项列表复制到set容器。
copy(1) set& operator= (const set& x); //until C++ 11 copy (1) set& operator= (const set& x); //从 C++ 11开始 move (2) set& operator= (set&& x); //从 C++ 11开始 initializer list (3) set& operator= (initializer_list<value_type> il); //从 C++ 11开始
copy(1):-将x中的所有元素复制到集合容器中。
move(2):-将x的内容移动到set容器中。
initializer_list(3):-将il的元素复制到set容器中。
x:具有相同类型的set对象。
il:初始化列表对象。
这个指针。
副本分配:尺寸线性。
移动分配:当前容器大小中的线性。
初始化程序列表分配:大小最大为对数。
与该集合相关的所有引用,迭代器和指针均无效。
访问所有复制的元素。
移动分配修改x。
set容器及其所有元素均已修改。
如果引发异常,则容器处于有效状态。
让我们看一个简单的示例,将一组内容复制到另一组:
#include <iostream> #include <set> using namespace std; int main(void) { set<int> s1 = {10,20,30}; cout << "集合s1包含以下元素" << endl; for (auto it = s1.begin(); it != s1.end(); ++it) cout << *it << endl; set<int> s2 = s1; cout<<"\n将元素从s1复制到s2之后... \n"; cout << "\n集合s2包含以下元素" << endl; for (auto it = s2.begin(); it != s2.end(); ++it) cout << *it<< endl; return 0; }
输出:
集合s1包含以下元素 10 20 30 将元素从s1复制到s2之后... 集合s2包含以下元素 10 20 30
在上面的示例中,运算符=用于将一个集合s1的内容复制到另一集合s2。
让我们看一个简单的示例,将一组元素移到另一组:
#include <iostream> #include <set> using namespace std; int main(void) { set<char> s1 = {'a','e','i','o','u'}; cout << "集合m1包含以下元素" << endl; for (auto it = s1.begin(); it != s1.end(); ++it) cout << *it << ", "; set<char> s2 = move(s1); cout<<"\n\n将元素从s1移动到s2之后... \n"; cout << "\n集合s2包含以下元素" << endl; for (auto it = s2.begin(); it != s2.end(); ++it) cout << *it << ", "; return 0; }
输出:
集合m1包含以下元素 a, e, i, o, u, 将元素从s1移动到s2之后? 集合s2包含以下元素 a, e, i, o, u,
在上面的示例中,运算符=用于将一个集合s1的内容移动到另一集合s2。
让我们看一个简单的示例,从初始化列表复制内容以进行设置:
#include <iostream> #include <set> using namespace std; int main(void) { set<int> s; s = {100, 200, 300, 400, 500}; //初始化 list cout << "Set包含以下元素" << endl; for (auto it = s.begin(); it != s.end(); ++it) cout << *it << endl; return 0; }
输出:
Set包含以下元素 100 200 300 400 500
在上面的示例中,operator =用于复制初始化程序列表中的内容以设置m。
让我们看一个简单的实例:
#include <iostream> #include <set> 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<< "c1的大小:" << c1 . size () << endl ; cout<< "c2的大小:" << c2 . size () << endl ; }
输出:
c1的大小:0 c2的大小:6
在上面的示例中,有两组c1和c2。c1有7个元素,而c2为空,但是在将c1分配给c2之后,c1的大小变为0,c2的大小变为7。