C++
文章平均质量分 62
南friend
呀,你在看我! 个人博客huqijun.org
展开
-
2020-08-09
所有博客都迁移到The Hu Post 了原创 2020-08-09 13:39:35 · 262 阅读 · 0 评论 -
C++小技巧之头文件保护符
更多关于编程语言, 数据库,算法等精品内容, 请访问 我的个人博客 huqijun.org-------------------------------------------------------------------------------------------------------------例如有一头文件A.h则A.h 的内容如下:#ifndef A...原创 2015-08-24 23:54:14 · 749 阅读 · 0 评论 -
string 类型的输入操作符和geline 函数对空白字符(空格,换行,制表)的处理
更多关于编程语言, 数据库,算法等精品内容, 请访问 我的个人博客 huqijun.org-------------------------------------------------------------------------------------------------------------C++ 中string 类型有两种比较常见的输入方式:string s...原创 2015-08-26 00:07:28 · 1041 阅读 · 0 评论 -
C++ 中string 对象比较
更多关于编程语言, 数据库,算法等精品内容, 请访问 我的个人博客 huqijun.org-------------------------------------------------------------------------------------------------------------C++中, 关系操作符在比较两个string 对象时, 采用了大小写敏感的...原创 2015-08-26 22:33:07 · 1021 阅读 · 0 评论 -
C++ 中使用字符数组来存放未知长度的字符串
更多关于编程语言, 数据库,算法等精品内容, 请访问我的个人博客 huqijun.org#include<iostream>#include<string>using namespace std;int main(){ size_t arry_size = 10; char * p_str = new char[arry...原创 2015-09-04 10:07:09 · 6983 阅读 · 0 评论 -
string 字符串比较以及c风格字符串比较
更多关于编程语言, 数据库,算法等精品内容, 请访问我的个人博客 huqijun.org#include<iostream>#include<string>using namespace std;int string_compare(string & s1, string & s2){ if(s1 == ...原创 2015-09-03 22:55:01 · 518 阅读 · 0 评论 -
C++ 中switch 使用注意事项
C++ switch 注意事项:1. switch 的目的是更方便的是实现深层嵌套的if /else 逻辑;2. switch 执行顺序是从唯一匹配的标号开始依次执行各语句,直到switch 结束或break 语句为止。 一般使用switch 时, case 中不要遗漏break ;3. default 语句是必要的,哪怕没有语句需要在default 下执行, 可以使用d...原创 2015-09-10 00:16:41 · 2022 阅读 · 0 评论 -
C++ switch 奇特用法
int vowelCnt = 0// .....switch(ch){case 'a':case 'e':case 'i':case 'o':case 'u':++vowelCnt;break;}上述例子等价于:switch(ch){ case 'a': case 'e': case 'i' : case 'o' :...原创 2015-09-09 23:01:22 · 1489 阅读 · 0 评论 -
C++中字符数组处理可变长字符串
更多关于编程语言, 数据库,算法等精品内容, 请访问我的个人博客 huqijun.org#include<iostream>#include<string>using namespace std;int main(){ size_t arry_size = 10; char * p_str = new char[arry_si...原创 2015-09-04 10:16:46 · 2615 阅读 · 0 评论 -
for 语句头中多个定义
更多关于编程语言, 数据库,算法等精品内容, 请访问我的个人博客 huqijun.org可以在for 语句的init-statement 在中定义多个对象,但只能有一个语句,故定义的所有对象必须是同一类型eg :for(int i =0 , j =0; i< 40 ; i++ ,j++)正确,在for 语句头定义同为int 型的i,jf...原创 2015-09-03 16:41:07 · 762 阅读 · 0 评论 -
使用数组初始化vector
更多关于编程语言, 数据库,算法等精品内容, 请访问我的个人博客 huqijun.org#include<iostream>using namespace std;int main(){ int a[]={0,1,2,3,4,5}; vector<int> t(a,a+6); for(vector<int>::i...原创 2015-09-04 10:29:37 · 750 阅读 · 0 评论 -
为什么C++ 不叫++C?
更多关于编程语言, 数据库,算法等精品内容, 请访问我的个人博客 huqijun.org这是一个叫人眼前一亮的题目, 在让人熟悉自增操作前置和后置两种形式时,也可以了解下C++ 的命名来历。自增(++)操作符有前置和后置两种形式,其区别如下:++i , 返回的是左值, 是i 加1 后 i 这个对象本身i++ , 返回的是右值, i 这个对象会加1 ,但返回的...原创 2015-09-04 17:55:35 · 817 阅读 · 0 评论 -
C++ 奇葩的空语句
#include<iostream>using namespace std;int main(){ ;;;;;;;; ;;; ;; ; return 0;}====================================C++中允许存在空语句, int i;;;; 很容易让人以为是非法语句····...原创 2015-09-08 23:30:49 · 1580 阅读 · 0 评论 -
C++中规定了求值顺序的操作符
C++ 中规定了求值顺序的操作符有以下4个:1. && :左操作数不能确定表达式的值,才需要计算右操作数2. || : 左操作数不能确定表达式的值,才需要计算右操作数3. ?: ( cond ? expr1:expr2) cond 为真时, 计算expr1 ; cond 为假时计算 expr24. , 逗号表达式从左到右计算, 结果是最右边的...原创 2015-09-04 21:43:47 · 1382 阅读 · 0 评论 -
C++ 唯一三元操作符: 条件操作符?
更多关于编程语言, 数据库,算法等精品内容, 请访问我的个人博客 huqijun.org条件操作符格式为:cond ? expr1: expr2;先计算cond 值, 若cond 为真,则 计算expr1 ,若cond 为假,则计算expr2作用: 将简单的if-else 嵌入表达式中最常用的例子:返回两个数中较大的:int max = i>...原创 2015-09-04 20:02:05 · 826 阅读 · 0 评论 -
C++ 内置类型在 i5 ,x64 机器上占用的长度
更多关于编程语言, 数据库,算法等精品内容, 请访问我的个人博客 huqijun.orgint main(){ cout<<" the size of int :"<<sizeof(int)<<endl; cout<<" the size of short :"<<sizeof(short)<<...原创 2015-09-04 20:31:53 · 385 阅读 · 0 评论 -
C++ 中while 比较少见的一种形式
#include<iostream>using namespace std;int main(){ string str1, str2; while(cin>>str1>>str2) { ; #ifndef NDEBUG cout<<"test"<<e...原创 2015-09-10 23:56:19 · 697 阅读 · 0 评论 -
C++ 基础调试手段
int main(){ string str1, str2; while(cin>>str1>>str2) { assert(str1 =="hello"); ; #ifndef NDEBUG cout<<"FILE "<<__FILE__<<end...原创 2015-09-11 00:09:35 · 475 阅读 · 0 评论 -
C++函数引用形参和非引用形参
C++中函数的形参主要有两种类型: 非引用形参和引用形参, 对应两种不同的参数传递方式。void f(int t);void f(int &t);非引用行参是实参的一个副本, 故对非引用形参的修改不会影响实参;引用形参是实参的别名,故对引用形参的修改其实就是修改实参;两者的主要区别是:1. 非引用形参在函数调用是,有从实参copy 到形参的拷贝开销, 在拷贝一些比原创 2015-09-18 23:26:12 · 2545 阅读 · 0 评论 -
C++ 引用形参和指针形参
从引用形参和非引用形参的区别来看,似乎任何时候使用引用形参都指针好, 既少了实参到形参拷贝的开消,也同样可以操作(非const )实参。那指针形参有没有什么优点呢?1. 指针形参比引用形参更能清晰的向函数调用者表明函数可能会修改实参数void f1(int * a);void f2(int &a);int main(){ int b=1原创 2015-09-26 12:48:18 · 1454 阅读 · 0 评论 -
C++ 中左值与右值区别
更多关于编程语言, 数据库,算法等精品内容, 请访问 我的个人博客 huqijun.org-------------------------------------------------------------------------------------------------------------《C++ primer 》第2章介绍变量时,介绍了表达式的两种类型:...原创 2015-08-21 21:51:38 · 1142 阅读 · 0 评论 -
C++之安全使用数组的4中方法
数组有两个特质:1. 不能复制(有些编译器将数组复制作为编译器扩展)2. 使用数组名时,自动将其转为为指向数组第一个元素的指针(隐式类型转换)上面两个特征决定了处理数组的函数通常通过指向数组元素的指针来处理数组内容一下几个数组形参定义是等价的:1. void fuck(int *p);2. void fuck(int p[]);3. void f原创 2015-09-27 00:41:35 · 479 阅读 · 0 评论 -
C++ 之内联(inline)函数
返回两个string 中 较短的一个:const string & shorterString(const string & s1, const string & s2){ return s1.size()}为这样小操作定义函数的好处是:1. 阅读和理解函数名比等价的表达式容易;2. 统一修改:只用修改一处函数,比找出所有表达式容易;但也缺点原创 2015-09-27 21:25:56 · 255 阅读 · 0 评论 -
cpu 占用小工具
更多关于编程语言, 数据库,算法等精品内容, 请访问我的个人博客 huqijun.org#include<iostream>int main(){while(true) {} return 0;}===================================================...原创 2015-08-21 21:31:13 · 774 阅读 · 0 评论 -
C++ 中单独的下划线_是合法的标识符
更多关于编程语言, 数据库,算法等精品内容, 请访问 我的个人博客 huqijun.org-------------------------------------------------------------------------------------------------------------int main(){ char _ = 'n'; st...原创 2015-08-21 22:32:20 · 6309 阅读 · 0 评论 -
C++: 函数返回非引用类型与返回引用类型
函数的返回过程和参数传递过程是相对称的两个的过程。参数传递从调用函数向被调用函数传递, 返回值从被调用函数向调用函数返回。有与传递方式的区别(拷贝副本与传递本身), 函数形参可以分为引用形参和非引用形参; 类似的,函数返回值也可以分为非引用类型返回值和引用类型返回值, 二者的差异和引用形参和非引用形参类型。当函数返回非引用类型是,返回值的拷贝副本用来初始化在函数调用处创建的临时原创 2015-09-26 23:52:29 · 462 阅读 · 0 评论 -
C++之全局对象,局部对象,静态局部对象
先说两个概念:作用域(scope) 和生命周期(lifetime)作用域: 名字的作用域指的是知道该名字的程序文本区域生命周期:对象的生命周期指在程序执行过程中对象存在的时间全局对象, 顾名思义是全局的对象,其作用域是整个程序文本,其对象的声明周期是整个程序的执行过程;局部对象: 一般说的局部变量都指的是动态局部变量,包括形参,某个语句块中定义的变量等。 动态局部变量是自原创 2015-09-27 20:05:25 · 1855 阅读 · 0 评论 -
main函数的参数:处理命令行选项
函数都有参数, main函数也不例外。一般我们使用的main 函数只有空的形参数表:int main(){return 0;}实际上main函数也是可以处理传进来的参数, 通过命令行选项的方式可以将参数传给main 函数此时main 函数是如下定义的:int main(int argc , char * argv[] ){re原创 2015-09-27 10:49:25 · 1482 阅读 · 0 评论 -
C++函数的声明,实现和默认实参
函数和变量都应该先声明再使用,在C++中。 声明和定义可以分开, 一般声明都在.h 文件中, 实现都放在.cpp 文件中。函数声明中的形参名会被忽略, 及即函数声明时可以不写形参名eg.void print(int * , int);默认实参是在形参列表中指定参数的默认值, 在调用包含默认实参的函数时, 若提供了实参,则会覆盖默认值; 若未提供实际参数,则使原创 2015-09-27 19:29:07 · 408 阅读 · 0 评论 -
为什么vector capacity 自增长都是2倍这样增加?
//待补充原创 2015-10-16 20:37:35 · 1591 阅读 · 3 评论 -
C++顺序性容器、关联性容器与容器适配器
//感谢原文作者,原文地址http://www.cnblogs.com/dyllove98/p/3214898.html什么是容器首先,我们必须理解一下什么是容器,在C++ 中容器被定义为:在数据存储上,有一种对象类型,它可以持有其它对象或指向其它对像的指针,这种对象类型就叫做容器。很简单,容器就是保存其它对象的对象,当然这是一个朴素的理解,这种“对象”还包转载 2015-10-17 21:22:46 · 242 阅读 · 0 评论 -
C++之容器适配器(adaptor)
//待补充原创 2015-10-16 23:38:51 · 562 阅读 · 0 评论 -
C++中直接把cin 输出的结果是什么
如题,如下代码:=====================================================#includeusing namespace std;int main(){cout}======================================================上面原创 2015-09-29 23:21:33 · 479 阅读 · 0 评论 -
C++:函数指针与函数引用
C++中主要有两类名字, 变量名和函数名(还有类名和结构体名等等)。 名字或者标识符要能唯一代表某一段内存区域。变量可以通过变量名,指针,引用几种方式直接或者间接的访问,类型的函数也可以通过函数名,函数指针,函数引用几种方式访问。1.通过函数名访问void fuck(int a);int main(){fuck(3);return 0原创 2015-09-27 23:41:03 · 3658 阅读 · 2 评论 -
C++ 几种刷新输出缓冲区方式
一下几种情况会导致缓冲区内容被刷新,即写入到真实的输出设备或者文件:1. 程序正常接收, 作为main 返回工作的一部分,将情况所有输出缓冲区;2. 一些不确定的时候,缓冲区可能已满;3. 使用manipulator 显示属性缓冲区, 比较常用的是endl, flush, ends:coutcoutcout4. 使用unitbuf 设置流的内部状态, 适原创 2015-09-30 00:14:33 · 8867 阅读 · 1 评论 -
从一道字符串处理题目谈开去
题目(C++ Primer 9.39):已知有如下string 对象:string line1 ="We were her pride of 10 she named us: ";string line2 ="Benjamin , Phoenix, the Prodigal ";string line3 = "and perspicacios pacifi Suzanne";原创 2015-10-16 22:48:46 · 290 阅读 · 0 评论 -
C++ 泛型算法unique 和unique_copy :删除相邻的重复元素
std::unique C++ Algorithm library Defined in header templateclass ForwardIt >ForwardIt unique( ForwardIt first, ForwardIt last );(1) templ原创 2015-11-05 22:36:19 · 721 阅读 · 0 评论 -
C++ 谓词(Predicate)与算法
谓词(Predicate),是做某些检测的函数,返回用于条件判断的类型,指出条件十分成立以count为例,实现count 功能的有两个泛型算法count() 和count_if(),定义如下:templatetypename iterator_traits::difference_type count( InputIt first, InputIt last, cons原创 2015-10-30 23:43:37 · 882 阅读 · 0 评论 -
使用front_inserter 将使元素反序
front_inserter 创建的迭代器将调用push_front()操作向容器中添加元素,将造成元素以相反的顺序出现在目标序列中,因为默认的顺序是和push_back() 相同的using namespace std;int main(int argc, char* argv[]){ list ivec1,ivec2,ivec3,ivec4,ivec5; f原创 2015-11-04 23:27:01 · 239 阅读 · 0 评论 -
C++ 之初探异常处理(exception)
// dail_test.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include #include#include#include#include#includeusing namespace std;int _tmain(int argc, _TCHAR* argv[]){原创 2015-09-16 22:52:37 · 663 阅读 · 2 评论