set练习
Posted yaxadu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了set练习相关的知识,希望对你有一定的参考价值。
set—内部自动有序且不含重复元素的容器
#include<stdio.h> #include<set> using namespace std; //定义set:set<typename> name;(如果typename是一个STL容器, 定义时要记得在>>符号前加上空格 set<int> name; set<double> name; set<char> name; set<node> name; //node是结构体的类型 //set数组的定义:set<typename> Arrayname[arraySize]; set<int> a[100]; //set容器内元素访问 **set只能通过迭代器(iterator)访问**:set<typename>::iterator it; set<int>::iterator it; set<char>::iterator it; //使用*it来访问set中的元素, **除了vector和string之外的STL容器都不支持*(it + i)的访问方式** #include<stdio.h> #include<set> using namespace std; int main() { set<int> st; st.insert(3); st.insert(5); st.insert(2); st.insert(3); //**不支持用it < st.end()的写法 for (set<int>::iterator it = st.begin(); it != st.end(); it++) { printf("%d", *it); } return 0; } //set常用函数 //insert(x):将x插入set容器中, 并自动递增排序和去重, 时间复杂度为O(longN), 其中N为set内元素的个数 //find(value):返回set中对应值为value的迭代器, 时间复杂度为O(logN),N为set内的元素个数 #include<stdio.h> #include<set> using namespace std; int main() { set<int> st; for (int i = 1; i <= 3; i++) { st.insert(i); } set<int>::iterator it = st.find(2); //在set中寻找2, 返回其迭代器 printf("%d ", *it); //或写成 printf("%d ", *st.find(2)); return 0; } //erase():删除单个元素、删除一个区间内所有元素 //删除单个元素:st.erase(it), it为所需要删除的元素的迭代器, 时间复杂度为O(1),可以结合find()函数使用 #include<stdio.h> #include<set> using namespace std; int main() { set<int> st; st.insert(100); st.insert(200); st.insert(100); st.insert(300); st.erase(st.find(100)); st.erase(st.find(200)); for (set<int>::iterator it = st.begin(); it != st.end(); it++) { printf("%d ", *it); } return 0; } //删除单个元素:st.erase(value), value为所需删除元素的值。 时间复杂度为O(logN), N为set内的元素个数 #include<stdio.h> #include<set> using namespace std; int main() { set<int> st; st.insert(100); st.insert(200); st.erase(100); for (set<int>::iterator it = st.begin(); it != st.end(); it++) { printf("%d ", *it); } return 0; } //删除一个区间内的所有元素:st.erase(first, last)可以删除一个区间内的所有元素, first为所需要删除区间的起始迭代器, 而last为所需要删除区间的末尾迭代器的下一个地址, 删除[first, last), 时间复杂度为O(last-first)。 #include<stdio.h> #include<set> using namespace std; int main() { set<int> st; st.insert(20); st.insert(10); st.insert(40); st.insert(30); set<int>::iterator it = st.find(30); st.erase(it, st.end()); for (it = st.begin(); it != st.end(); it++) { printf("%d ", *it); } return 0; } //size():用来获得set内元素的个数, 时间复杂度为O(1) #include<stdio.h> #include<set> using namespace std; int main() { set<int> st; st.insert(2); st.insert(5); st.insert(4); printf("%d ", st.size()); return 0; } //clear():清空set中所有的元素, 复杂度为O(N), 其中N为set内元素的个数 #include<stdio.h> #include<set> using namespace std; int main() { set<int> st; st.insert(2); st.insert(5); st.insert(4); st.clear(); printf("%d ", st.size()); return 0; } //反向迭代器 #include<stdio.h> #include<set> using namespace std; int main() { set<int> st; for (int i = 0; i < 8; i++) { st.insert(i); } set<int>::reverse_iterator rit; //定义反向迭代器 for (rit = st.rbegin(); rit != st.rend(); rit++) { printf("%d ", *rit); } } //set中元素是唯一的, 如果需要处理不唯一的情况, 需要使用multiset //C++11标准中添加了unordered_set, 以散列代替set内部的红黑树实现, 使其可以用来处理只去重但是不排序的需求, 速度比set快很多
以上是关于set练习的主要内容,如果未能解决你的问题,请参考以下文章
django.core.exceptions.ImproperlyConfigured: Requested setting DEFAULT_INDEX_TABLESPACE的解决办法(转)(代码片段
django.core.exceptions.ImproperlyConfigured: Requested setting DEFAULT_INDEX_TABLESPACE的解决办法(转)(代码片段
Python练习册 第 0013 题: 用 Python 写一个爬图片的程序,爬 这个链接里的日本妹子图片 :-),(http://tieba.baidu.com/p/2166231880)(代码片段