学习了这么长时间的c++,一直没有做总结,今天就从我现在所学的地方开始向前做一个总结。
STL(标准模版类)部分小结
**Map**
网上参考资料(记性不是很好,这些概念记不住)
map是一类关联式容器。它的特点是增加和删除节点对迭代器的影响很小,除了那个操作节点,对其他的节点都没有什么影响。对于迭代器来说,可以修改实值,而不能修改key。
Map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据 处理能力,由于这个特性,它完成有可能在我们处理一对一数据的时候,在编程上提供快速通道。这里说下map内部数据的组织,map内部自建一颗红黑树(一 种非严格意义上的平衡二叉树),这颗树具有对数据自动排序的功能,所以在map内部所有的数据都是有序的,后边我们会见识到有序的好处
vector:连续存储的元素
list:有节点组成的元素,每个节点包含一个元素
set:由节点组成的红黑树
以下代码要使用的头文件
#include<vector>
#include<string.h>
#include<iostream.h>
#include<algorithm>
using namespace std ;
map容器的用法
class compare{
public :
//运算符重载
bool operator(int a,int b){
return a > b ;
}
};
int main(){
//图的定义
map<int ,string>a ;
//第一种添加方式
a.insert(pair<int,string>(5,"hhhhhhh"));
//第二中添加元素方式
a.insert(make_pair(3,"sssssss"));
//第三中添加元素方式
a.insert(map<int,string>::value_type(10,"dddddd"));
//打印的是按照第一个数的值排好序的序列,字符串就按照字符串的比较规则进行排序
for(auto s = s.begin() ; s!= a.end() ;s ++){
cout<<s->first<<" "<<s->second<<endl ;
}
map<int,string,compare>b ;
//之后与以上同样的操作会将传入map中的元素按照默认排序顺序逆置
}
vector容器+迭代器
bool compare(int a ,int b){
return a > b ;
}
int main(){
//定义迭代器
vector<int>::iteraor iter;
vector<int>a ;
//举个例子,添加元素
int data ;
while(cin>>data){
if(data == -1)break;
a.push_back(data);
}
for(iter = a.begin() ;iter != a.end() ; a++){
cout<<*a<<endl ;
}
//对容器内的整型值进行排序
a.sort();
//对容器内的数值进行排序,与默认排序顺序相反
a.sort(compare);
}
set容器
int main(){
set<int>::iterator b;
set<int>a ;
a.insert(12);
a.insert(11);
a.insert(6);
//默认按照从小到大的顺序输出
for(b = a.begin() ; b!= a.end() ; b++){
cout<<*b<<endl ;
}
}
list容器
int main(){
list<int>a ;
int i ;
while(cin>>i){
if(i == -1)break ;
list.pus_back(i);
}
//往前最前面加数据
list.push_front(10);
//使用迭代器的话按照从小到大顺序输出
}