cpp学习笔记(三)

来源:互联网 发布:猫 益生菌 知乎 编辑:程序博客网 时间:2024/06/05 11:46

cpp学习笔记(三)

16章 标准模板库简介
17章 STL string类
18章 STL动态数组类
19章 STL list
20章 STL set于multiset
21章 STL map和multimap

16章 标准模板库简介
存储信息的容器
访问容器存储的信息的迭代器
操作容器内容的算法

17章 STL string类
为何需要字符串操作类
使用STL string类
基于模板的STL string实现

18章 STL动态数组类
vector的特点
典型的vector的操作
理解大小和容量
STL deque

19章 STL list
std::list的特点
基本的list操作

20章 STL set于multiset
set和multiset简介
set和multiset基本操作
set和multiset容器的优缺点

21章 STL map和multimap
STL map和multimap简介
STL map和multimap的基本操作
使用排序谓词定制排序行为

////  main.cpp//  stl_16_21////  Created by bikang on 16/9/28.//  Copyright (c) 2016年 bikang. All rights reserved.//#include <iostream>#include <algorithm>#include <string>#include <vector>#include <deque>#include <list>#include <set>#include <map>using namespace std;void tChapter16();void tChapter17String();void tChapter18Vector();void tChapter19List();bool sortFunc(const int& a1,const int& a2);void tChapter20Set();void tChapter21Mul();int main(int argc, const char * argv[]) {    //tChapter16();    //tChapter17String();    //tChapter18Vector();    //tChapter19List();    //tChapter20Set();    tChapter21Mul();    return 0;}void tChapter21Mul(){    map<int,string> map1;    //insert    map1.insert(map<int,string>::value_type(1,"a"));    map1.insert(make_pair(2, "b"));    map1.insert(pair<int, string>(4, "belly"));    cout << map1[1]<<endl;    cout << map1.size() <<endl;    map1.erase(2);    map<int,string>::iterator itemt1;    itemt1 = map1.find(4);    if(itemt1 != map1.end()){        cout << itemt1->first<<"="<<itemt1->second<<endl;    }    map<int,string>::iterator item= map1.begin();    while(item != map1.end()){        //cout << *item <<",";        cout << item->first<<"="<<item->second<<",";        ++item;    }    cout <<endl;    multimap<int, string> umap1;    umap1.insert(map<int,string>::value_type(1,"a"));    umap1.insert(make_pair(2, "b"));    umap1.insert(make_pair(2, "b1"));    umap1.insert(pair<int, string>(4, "belly"));    multimap<int, string>::const_iterator itemt3;    itemt3 = umap1.find(2);    if(itemt3 != umap1.end()){        cout <<"find##" << itemt3->first<<"="<<itemt3->second<<endl;    }    multimap<int, string>::const_iterator item2= umap1.begin();    while(item2 != umap1.end()){        //cout << *item <<",";        cout << item2->first<<"="<<item2->second<<",";        ++item2;    }    cout <<endl<< "end";}void tChapter20Set(){    set<int>s1;    s1.insert(11);    s1.insert(11);    s1.insert(21);    set<int>::iterator s1t;    for (s1t=s1.begin(); s1t!=s1.end(); ++s1t) {        cout << *s1t<<",";    }    cout << endl;    //find    set<int>::iterator ielem = s1.find(21);    if(ielem != s1.end()){        cout << *ielem<<endl;    }    //delete    s1.erase(ielem);    for (s1t=s1.begin(); s1t!=s1.end(); ++s1t) {        cout << *s1t<<",";    }    cout << endl;    multiset<int>ms1;    ms1.insert(11);    ms1.insert(11);    ms1.insert(21);    multiset<int>::iterator ms1t;    for (ms1t=ms1.begin(); ms1t!=ms1.end(); ++ms1t) {        cout << *ms1t<<",";    }    return;}void tChapter19List(){    list<int> list1;    list1.push_front(1);    list1.push_front(3);    list1.push_front(2);    list1.push_front(5);    list1.push_back(21);    list1.insert(list1.begin(),3,1);    //反转    list1.reverse();    //list1.sort();    list1.sort(sortFunc);    list<int>::iterator ilist1;    for (ilist1=list1.begin(); ilist1!=list1.end(); ++ilist1) {        cout << *ilist1<<",";    }    cout << endl;    return;}bool sortFunc(const int& a1,const int& a2){    //return (a1 > a2);    return (a1 < a2);}void tChapter18Vector(){    //固定大小的数据    vector<int> vec1;    vector<int> vec2(10);    vector<int> vec3(10,90);    vector<int> vec4(vec2);    vector<int> vec5(vec2.begin(),vec2.begin()+5);    //插入    vec1.push_back(1);    vec1.push_back(3);    vec1.push_back(2);    vec1.insert(vec1.begin(), 32);    vec1.insert(vec1.end(), 2, 33);    //删除    vec1.pop_back();    vector<int>::iterator elem;    for (elem=vec1.begin(); elem<vec1.end(); ++elem) {        cout << *elem <<",";    }    //访问    cout <<endl << vec1[0] <<endl;    //size 和容量    cout <<"size="<<vec1.size()<<endl;    cout <<"capacity="<<vec1.capacity()<<endl;    //deque    deque<int> de1;    de1.push_back(1);    de1.push_front(2);    de1.push_back(3);    return;}void tChapter17String(){    //string 把我们从繁杂的字符串操作中解放出来    //复制,连接,查找字符和子字符串,截短    //使用标准模板提供的算法实现字符串反转和大小转换    const char *msg ="hello cpp";    string str1(msg);    string str2(str1,6);    string str3(10,'a');    cout << str1 << ","<< str2 <<","<<  str3 <<endl;    //访问内容    for (size_t i=0; i< str1.length(); ++i) {        cout << str1[i]<<",";    }    cout << endl;    string::const_iterator istr;    for(istr =str1.begin();istr!=str1.end();++istr){        cout << *istr<<",";    }    cout << endl;    //连接    cout << str1+str3<<endl;    //查找字符    size_t offset = str1.find("l",0);    if(offset != string::npos)        cout << offset;    //去除    str1.erase(offset, 3);    cout << str1<<endl;    //反转    reverse(str1.begin(), str1.end());    cout << str1 <<endl;    //transform(str1.begin(), str1.end(), str1.begin(), toupper)    //transform(str1.begin(),str1.end(),str1.begin(),toupper);    cout << str1 <<endl;}void tChapter16(){    cout << "chapter16"<< endl;    //顺序容器vector deque list    //关联容器set map multiset multimap    //迭代器  输入迭代器,输出迭代器    //  前向迭代器,双向迭代器,随机访问迭代器    //stl算法    //find find_if reverse remove_if transform    vector<int> vet1;    vet1.push_back(21);    vet1.push_back(2);    vet1.push_back(8);    vet1.push_back(5);    vector<int>::iterator item = vet1.begin();    while(item != vet1.end()){        cout << *item << ",";        ++item;    }    cout << endl;    vector<int>::iterator ielem = find(vet1.begin(), vet1.end(), 8);    if(ielem != vet1.end()){        int nPosition = static_cast<int>(distance(vet1.begin(), ielem));        cout << "value=" << *ielem;        cout << "find data in "<< nPosition;    }    return;}
0 0
原创粉丝点击