zoukankan      html  css  js  c++  java
  • C++杂项

    inline函数必须在头文件中定义吗?

    http://blog.csdn.net/tonywearme/article/details/7097910

    http://blog.csdn.net/clever101/article/details/5747626

    如果一个inline函数会在多个源文件中被用到,那么必须把它定义在头文件中

    释放vector内存的两种方法

    http://bbs.csdn.net/topics/320217048

    经常听见有人说vector内存是不可以释放的。实际上这是一种误解,
    下面提供两种方法,各有千秋:

    C/C++ code?
    1
    2
    3
    int a[10] = {12,3,45,6,7,2,45,5,2,10};
    vector<int> S(a,a+10);
    S.swap(vector<int>());


    这是利用swap函数,和临时对象交换,使S对象的内存为临时对象的内存一样,而临时
    对象的内存为S对象的内存。交换以后,临时对象消失,释放内存。不是传统所说的,程序退出才释放内存。
    这可以调试跟踪一下。而且我们为了调整S的容纳3个元素,可以这样写:

    C/C++ code?
    1
    S.swap(vector<int>(3));


    我还记得这个论坛上有人问为什么要把swap写成成员函数,而不直接调用std::swap,其原因在于封装。
    也就是假如需要交换的变量是有3个,那么std::swap要写成3次:
    如:
     

    C/C++ code?
    1
    2
    3
    4
    5
    void swap(vector<_Tp, _Alloc>& __x) {
        __STD::swap(_M_start, __x._M_start);//一次
        __STD::swap(_M_finish, __x._M_finish);//二次
        __STD::swap(_M_end_of_storage, __x._M_end_of_storage);//三次
      }


    而且,在类外面的swap是无法调用类的私有成员的。swap还具有一个非常重要的优点——不抛出异常。

    C++ STL中的vector的内存分配与释放

    http://www.cnblogs.com/biyeymyhjob/archive/2012/09/12/2674004.html

  • 相关阅读:
    第十三周进度条
    寻找水军
    第十二周进度条
    学习总结
    第十五周工作总结
    第十四周工作总结
    《梦断代码》阅读笔记03
    个人工作总结20
    个人工作总结19
    个人工作总结18
  • 原文地址:https://www.cnblogs.com/jingzhishen/p/3386920.html
Copyright © 2011-2022 走看看