cpp学习笔记(三)

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;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值