1. class TransForm
    2. {
    3. public:
    4. int operator()(int val)
    5. {
    6. return val;
    7. }
    8. };

    C++复习.xmind
    STL.xmind
    stl算法.xmind
    list的优点:

    • 采用动态存储分配,不会造成内存浪费和溢出
    • 链表执行插入和删除操作十分方便,修改指针即可,不需要移动大量元素

    list的缺点:

    • 链表灵活,但是空间(指针域) 和 时间(遍历)额外耗费较大

    List有一个重要的性质,插入操作和删除操作都不会造成原有list迭代器的失效,这在vector是不成立的。

    总结:STL中List和vector是两个最常被使用的容器,各有优缺点

    1. getline(cin, str);//带空格输入一整行就用getline
    2. cin << str; //遇到空格就停止输入了
    1. getline(cin, str); //
    2. n = atoi(str.c_str());//str转换成整数
    1. float n;
    2. string str;
    3. getline(cin, str);
    4. n = atof(str.c_str());

    “实际中的Hash函数是指把一个大范围映射到一个小范围。把大范围映射到一个小范围的目的往往是为了节省空间,使得数据容易保存。除此以外,Hash函数往往应用于查找、加密作用。

    从静态存储区域分配:它是由编译器自动分配和释放的,即内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在,直到整个程序运行结束时才被释放,如全局变量与 static 变量。
    在栈上分配:它同样也是由编译器自动分配和释放的,即在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元将被自动释放。需要注意的是,栈内存分配运算内置于处理器的指令集中,它的运行效率一般很高,但是分配的内存容量有限。
    从堆上分配:也被称为动态内存分配,它是由程序员手动完成申请和释放的。即程序在运行的时候由程序员使用内存分配函数(如 malloc 函数)来申请任意多少的内存,使用完之后再由程序员自己负责使用内存释放函数(如 free 函数)来释放内存。也就是说,动态内存的整个生存期是由程序员自己决定的,使用非常灵活。需要注意的是,如果在堆上分配了内存空间,就必须及时释放它,否则将会导致运行的程序出现内存泄漏等错误。