当前位置: 代码迷 >> 综合 >> 【PAT笔记】C++常用容器使用手册
  详细解决方案

【PAT笔记】C++常用容器使用手册

热度:59   发布时间:2024-02-09 23:35:19.0

1.set 

set的结构体重载以及内部成员访问。

struct node {int a,b;bool friend operator <(node n1,node n2) {return n1.a < n2.a;}
};
set<node>nset;
int main() {for (int i = 0; i < 10; i++) nset.insert({100-i,i});for (auto it = nset.begin(); it != nset.end(); it++)cout << it->a << " " << it->b << endl;return 0;
}

对于结构体的成员访问需要使用 it->a ,但是对于set<int>这样的容器元素访问,就需要*it。

set<int>iset;
int main() {for (int i = 0; i < 10; i++)iset.insert(20 - i);iset.erase(15);    //删除元素if (iset.find(15) == iset.end())cout << "15 is deleted!" << endl;    //查找元素for (auto it = iset.begin(); it != iset.end(); it++)cout << *it << endl;return 0;
}

什么时候用得到set以及其重载:

(1)含负数的不重复统计时使用,如果数据较小且全部为正数时,直接使用数组统计。

(2)结构体查找时使用,经测试,1e6的数据量查找一次几乎不花时间。P.S.结构体查找时lower_bound不可用。

 

注意:(1)set<int>插入1e5次就需要1.4秒,必然超时,插入1e4次需要138毫秒,最多插入1e4次,而且是单int变量,可见适用范围并不广。

 

  相关解决方案