STL: set和map的区别、联系、使用

 

set是一种关联式容器,其特性如下:

  • set以RBTree作为底层容器
  • 所得元素的只有key(键)没有value(值)
  • 不允许出现键重复
  • 所有的元素都会被自动排序
  • 不能通过迭代器来改变set的值,因为set的值仅有键,键不能被修改

 

map和set一样是关联式容器,它们的底层容器都是红黑树,但是,map是存储键值对。

它的特性如下:

  • map以RBTree作为底层容器
  • 所有元素都是键+值存在
  • 不允许键重复
  • 所有元素是通过键进行自动排序的
  • map的键是不能修改的,但是其键对应的值是可以修改的
#include <map>  
  
#include <string>  
  
#include <set>
#include <iostream>

using namespace std;

int main() {

    set<int> iset;
    iset.insert(11);
    iset.insert(12);
    iset.insert(13);
    iset.insert(14);
    for (set<int>::iterator iter = iset.begin(); iter != iset.end(); ++iter)
        cout << *iter << endl;
    

    cout << endl;


    map<int, string> mapStudent;  
    mapStudent.insert(pair<int, string>(1, "student_one"));  
    mapStudent.insert(pair<int, string>(2, "student_two"));  

    mapStudent.erase(mapStudent.begin(), mapStudent.end());  // 清空map内的元素

    pair<int, string>  Student3(3, "student_three");
    mapStudent.insert(Student3);  


    map<int, string>::iterator iter;  
  
    for(iter = mapStudent.begin(); iter != mapStudent.end(); iter++)  
         cout << "first: "<< iter->first << ",      second:" << iter->second << endl;  

    return 0;
}
 

编译运行:

 

 

 

 

 

.

posted @ 2020-10-22 11:22  一匹夫  阅读(726)  评论(0编辑  收藏  举报