当前位置 博文首页 > 白徽的博客:set复习

    白徽的博客:set复习

    作者:[db:作者] 时间:2021-07-30 20:58

    set review

    //review the set
    
    #include <iostream>
    #include <set>
    using namespace std;
    
    int main(void)
    {
    	//定义方式
    	//set<typename> name; 
    	set<int> s;
    	//typename 也可以是STL容器或者结构体,若是STL容器记得尖括号中间留下空格
    	
    	//set arry -- set数组 
    	//set<typename> name(arry size); 此时从name[0]~name[arry size - 1]皆为set容器
    	
    	//push element in set
    	//set会自动删除重复的元素,并递增排序 
    	s.insert(7); 
    	s.insert(7);
    	s.insert(2);
    	s.insert(2);
    	s.insert(3);
    	s.insert(3);
    	s.insert(1);
    	s.insert(1);
    	
    	
    	set<int>::iterator it = s.begin();
    	//set 的元素只能通过迭代器访问
    	//不能这样访问 name[i] or *(it + i)
    	//科普一下:在STL容器中只有vector或者string才能这么访问 *(it + i)
    	cout<<"递增排序并删除重复的元素:";
    	for(;it != s.end();it++){
    		cout<<*it<<' ';
    	}
    	cout<<endl;
    	
    	//查找一个元素是否在set里面
    	it = s.find(2);
    	cout<<"s.find(2) : "<<*it<<endl;
    	//如果没有找到有些返回end()的迭代器 。有些编译器他返回元素个数比如DEV
    	//或许也是C++标准不同的缘故 
    	
    	//return element number
    	cout<<"return element number "<<s.size()<<endl;
    	
    	//delete one data 
    	s.erase(it);
    	s.erase(3);
    	//可以是迭代器,也可以是值
    	
    	//delete any data -- 删除一个区间的数据,用迭代器,注意第二个参数是指定元素的下一个迭代器 
    	s.erase(s.begin(),s.end()); 
    	
    	//delete all data
    	s.clear();
    	
    	return 0;
     } 
    
    cs