RAII资源分配即初始化,定义一个类来封装资源的分配和释放,在构造 函数完成资源的分配和初始化,在析构函数完成资源的清理,可以保证资源的正确初始化和释放。 智能指针的引入:由于return ,throw等关键字的存在,导致顺序执行流的错乱,不断的进行跳转,使开辟的空间看似被释放,而实际上导致内存的泄露。例如以下两个例子:void Test1() { int *p1&
斐波那契数列1、写一个函数,输入n,求斐波那契数列的第n项。斐波纳挈数列的定义如下:解法一:使用递归解决long long RecurFibonacci(unsigned int n) { if (n <= 0) { return 0; } if (n == 1) {
1、春节期间小明使用微信收到很多个红包,非常开心。在查看领取红包记录时发现,某个红包金额出现的次数超过了红包总数的一半。请帮小明找到该红包金额。写出具体算法思路和代码实现,要求算法尽可能高效。给定一个红包的金额数组gifts及它的大小n,请返回所求红包的金额。测试样例:[1,2,3,2,2] 5返回:2解题思路:采用阵地攻守的思想: 第一个数字作为第一个士兵,守阵地;count = 1
函数模板提供了一种机制通过它我们可以保留函数定义和函数调用的语义在一个程序位置上封装了一段代码确保在函数调用之前实参只被计算一次.函数模板提供一个种用来自动生成各种类型函数实例的算法程序员对于函数接口参数和返回类型中的全部或者部分类型进行参数化(parameterize)而函数体保持不变.函数模板使用注意事项:1、每个函数模板前边都需要添加模板声明例如:template<typename T
1、传统的实现string类的方法优点:程序简单易懂缺点:1)在实现其拷贝构造和赋值的操作时多次的调用new动态的开辟空间,因此也需要多次的通过delete来释放空间。如果处理不当还容易造成内存泄漏。2)程序的一致性比较差#include <iostream> #include <string> using namespace std
Copyright © 2005-2024 51CTO.COM 版权所有 京ICP证060544号