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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值