c++ 模板类有感

stl 模板类给我们提供了极大的方便。容器类使我们不再关心内存分配问题,只要声明一个合适的容器对象就可以了。

字符串类简化了对字符的操作。 它的众多的成员函数使得处理字符非常简单。

string 类没有trim 函数, 但两句话就能构建一个 trim 函数。
string.erase(0,str.find_first_not_of(" \t"));
string.erase(str.find_last_not_of(" \t")+1);


前提是你要熟悉它的erase 函数, find_first_not_of, find_last_not_of, 等相关函数。

对string 的处理,熟能生巧, 用多了就知道就那么回事了。

存储类也是一样。

用多了也觉得,用stl 确实很好用, 使你可以省很多代码。

=====================================

// 向一个有序表中(例如vec),插入数据,使仍然有序
// 简单的程序

=====================================
#include <iostream>
#include <stdlib.h>
#include <vector>
#include <algorithm>
using namespace std;

//重载抽取运算符, 扩充 << 的能力,  c++ 的多态性
//对于vector<int>的参数类型采用如下操作
ostream& operator<<(ostream& os, vector<int>& vec)
{
    vector<int>::iterator it;
    for(it=vec.begin();it!=vec.end();it++)
        cout << *it<<' ';
    os << endl <<endl;
    return os;
}


int main()
{
    vector<int> vec;
    vector<int>::iterator it;
    int r;
    unsigned int i;
    for (i = 0; i < 10; i++) {
        r = rand()%100;
        vec.push_back(r);
    }

    std::sort(vec.begin(),vec.end());  //升序排列
    cout << vec;
    int val = 45;
    // 采用了暴力搜索,数据大时可以改为折半查找
    for (it=vec.begin();it!=vec.end();it++) {
        if (*it > val) {
            vec.insert(it, val);
            break;
        }
    }
    cout << vec;
    return 0;
}


你可能感兴趣的:(c++ 模板类有感)