int binarySearch(int[] nums, int target) {int left = 0; int right = nums.length - 1; // 注意while(left <= right) {//int mid = (right + left) / 2; //不建议使用int mid = left + (right-left)/2;if(nums[mid] == target)return mid; elseif (nums[mid] < target)left = mid + 1; // 注意elseif (nums[mid] > target)right = mid - 1; // 注意 }return -1; }这就是最基本的二分查找,若查找成功,则立即返回target...
函数模板std::declval (c++11 only)template<typename T> typename add_rvalue_reference<T>::type declval() noexcept;功能描述: 返回一个类型的右值引用,不管是否有没有默认构造函数或该类型不可以创建对象。(可以用于抽象基类);参数:无返回值:类型T的右值引用例子:// declval example #include <utility> // std::declval #include <iostream> // std::coutstruct A { // abstract classvirtual...
原创声明:本文系博主原创文章,转载及引用请注明出处。 1. INI文件介绍INI是英文单词 INItialization 的缩写,常作为Windows系统下的配置文件。INI文件是文本文件,通常用于程序启动时初始化系统配置。 2. INI文件格式 1)节(section) INI文件由若干节组成,一节是由当前节首至下一节首之间的内容,例如:[section1] sec1_key1=sec1_val1 sec1_key2=sec1_val2 ... [section2] sec2_key1=sec2_val1 sec2_key2=sec2_val2 ...
转自:http://blog.csdn.net/xt_xiaotian/article/details/5714477 ---------------------------------------------------------------------------------------------------C++ 智能指针详解 一、简介由于 C++ 语言没有自动内存回收机制,程序员每次 new 出来的内存都要手动 delete。程序员忘记 delete,流程太复杂,最终导致没有 delete,异常导致程序过早退出,没有执行 delete 的情况并不罕见。用智能指针便可以有效缓解这类问...
C++中的const关键字的用法非常灵活,而使用const将大大改善程序的健壮性,本人根据各方面查到的资料进行总结如下,期望对朋友们有所帮助。Const 是C++中常用的类型修饰符,常类型是指使用类型修饰符const说明的类型,常类型的变量或对象的值是不能被更新的。 一、Const作用 如下表所示:No.作用说明参考代码1可以定义const常量const int Max = 100; 2便于进行类型检查const常量有数据类型,而宏常量没有数据类型。编译器可以对前者...
所谓的详解只不过是参考www.cplusplus.com的说明整理了一下,因为没发现别人有详细讲解。 chrono是一个time library, 源于boost,现在已经是C++标准。话说今年似乎又要出新标准了,好期待啊! 要使用chrono库,需要#include<chrono>,其所有实现均在std::chrono namespace下。注意标准库里面的每个命名空间代表了一个独立的概念。所以下文中的概念均以命名空间的名字表示! chrono是一个模版库,使用简单,功能强大,只需要...
本文转载自:http://www.cnblogs.com/gw811/archive/2012/10/20/2732687.html引用:就是某一变量(目标)的一个别名,对引用的操作与对变量直接操作完全一样。引用的声明方法:类型标识符 &引用名=目标变量名; 如下:定义引用ra,它是变量a的引用,即别名。 int a; int &ra=a; (1)&在此不是求地址运算符,而是起标识作用。 (2)类型标识符是指目标变量的类型。 (3)声明引用时,必须同时对其进行初...
命名空间的定义格式为:(取自C++标准文档)named-namespace-definition: namespace identifier { namespace-body } unnamed-namespace-definition: namespace { namespace-body } namespace-body: declaration-seqopt有名的命名空间: namespace 命名空间名 { 声明序列可选 } 无名的命名空间: namespace { 声明序列可选 } 所谓C+...
在C++中,explicit关键字用来修饰类的构造函数,被修饰的构造函数的类,不能发生相应的隐式类型转换,只能以显示的方式进行类型转换。 explicit使用注意事项: explicit 关键字只能用于类内部的构造函数声明上。 explicit 关键字作用于单个参数的构造函数。 在C++中,explicit关键字用来修饰类的构造函数,被修饰的构造函数的类,不能发生相应的隐式类型转换。 在C++中,如果一个类有只有一个参数的构造函数,C++允许一种...
1. 设计模式分类2. 好的面向对象设计 2.1. 三大面向对象机制2.2. 重构技法2.3. 软件设计需要解决的因素 3. 设计原则4. 创建型模式 4.1. 单例模式 4.1.1. 简介4.1.2. 使用效果?优缺点?4.1.3. 使用时注意事项!4.1.4. 使用场景?业界知名例子4.1.5. 难点 4.2. 工厂方法模式 4.2.1. 简介4.2.2. 使用效果?优缺点?4.2.3. 使用场景?业界知名例子 4.3. 抽象工厂模式 4.3.1. 简介4.3.2. 使用效果?优缺点?4.3.3. 使用场景?业界知名例...
前面的文章C++设计模式之单例模式详解(懒汉模式、饿汉模式、双重锁)讲了设计模式中最简单的单例模式,有需要的可以点击链接去看看,用C++详细的实现了单例模式包括懒汉式、饿汉式、双重锁等方式。今天讲讲另外一种简单的设计模式:简单工厂模式。 在实际的工作场景中,程序员写的代码实现基本功能仅仅是第一步,更重要的是代码的可维护性、可复用性和灵活性。对于C++程序员,我们要想的如何利用面向对象的编程思想,用好...
显示程序运行的时间是以秒为单位 用户在格式化时间字符串时只需要获得时间的分秒部分 其余可以舍去 int mtime1; //声明全局变量 int stime1; BOOL CMy12Dlg::OnInitDialog() { ... //省略部分代码 CTime time1; //定义CTime类变量 CString str,str1; //定义字符串 Time1=CTime::GetCurrentTime(); //获取当前系统时间 str=time1.Format("%M"); //格式化输出时间分钟部分 str1=time1.Format("%S"); //格式化输出时间秒钟部分 mtim...
超女选秀的例子我们玩了很久,为了学习的需要,暂时离开美眉们,我将采用实际项目开发的例子来讲解类的更多知识。 在C语言基础知识中已学习过文件操作,在实际开发中,为了提高效率,我会把文件操作封装成一个类,类的声明如下: // 文件操作类声明 class CFile { private:FILE *m_fp; // 文件指针bool m_bEnBuffer; // 是否启用缓冲区,true-启用;false-不启用public:CFile(); // 类的构造函数CFile(bool bEnBuffer); ...
题目描述 给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数。 附加要求尽可能想出更多的解决方案,至少有三种不同的方法可以解决这个问题。 你可以使用空间复杂度为 O(1) 的 原地 算法解决这个问题吗?样例输入与输出 输入: nums = [1,2,3,4,5,6,7], k = 3 输出: [5,6,7,1,2,3,4] 解释: 向右旋转 1 步: [7,1,2,3,4,5,6] 向右旋转 2 步: [6,7,1,2,3,4,5] 向右旋转 3 步: [5,6,7,1,2,3,4]输入:nums = [-1,-100,3,99...
https://blog.csdn.net/hyman_yx/article/details/52044632 左值、右值 在C++11中所有的值必属于左值、右值两者之一,右值又可以细分为纯右值、将亡值。在C++11中可以取地址的、有名字的就是左值,反之,不能取地址的、没有名字的就是右值(将亡值或纯右值)。举个例子,int a = b+c, a 就是左值,其有变量名为a,通过&a可以获取该变量的地址;表达式b+c、函数int func()的返回值是右值,在其被赋值给某一变量前,我们不能通过变量...