C++
yamingwu
这个作者很懒,什么都没留下…
展开
-
[C++] 使用基于范围的for循环操作string
C++11提供范围for语句,这个语句遍历给定的序列中的每个元素并对序列中的每个元素执行某种操作原创 2015-06-03 21:41:12 · 3162 阅读 · 0 评论 -
XCode创建C++工程
1. 创建命令行程序:2. 设置工程名和语言:3. 设置工程存储路径:4. xcode会自动为工程添加main函数:5. 编译执行:原创 2015-07-25 16:17:48 · 5602 阅读 · 1 评论 -
[C++11]新特性试用
Auto在C++11之前,auto关键字用来指定存储期。在新标准中,它的功能变为类型推断。auto现在成了一个类型的占位符,通知编译器去根据初始化代码推断所声明变量的真实类型。各种作用域内声明变量都可以用到它。例如,名空间中,程序块中,或是for循环的初始化语句中。 auto i = 42; // i is an int auto p = new char; // p is a c原创 2015-07-31 08:35:38 · 649 阅读 · 0 评论 -
[C++] Most Vexing Parse
这个东西可能会常见,所以还是单独写出来比较好。所谓的Most Vexing Parse是个什么东西呢。它是C++中的一个特性,这个特性表述起来其实是这样子的:凡是长得像是函数声明的,就是函数声明。是不是听的有点糊涂了?好那么我们举个几个例子好啦。我们都知道像是string这种东西,一般声明的时候,不用赋值就会调用缺省的构造函数了,对吧。所以一般我们这么些就可以了:转载 2015-08-27 11:54:29 · 2059 阅读 · 0 评论 -
[C++11] thread
C++11标准库支持了thread,在MAC上试一试:#include #include void hello(void){ std::cout << "Hello concurrent world" << std::endl;}int main(void){ std::thread t(hello); t.join();}命令行编译(如果用xcode编译和其它oc工原创 2015-07-25 16:10:20 · 664 阅读 · 0 评论 -
[C++] decltype类型指示符
有些情况下,我们希望从表达式的类型推断出要定义的变量的类型,但是不想用该表达式的值初始化变量。此时就要用到C++11引入的第二种类型说明符delctype,它的作用就是选择并返回操作数的数据类型。编译器分析表达式并得到它的类型,但不实际计算表达式的值: decltype (size(5)) s = i;' decltype返回size函数返回值的类型,来声明变量s。decltype处理原创 2015-05-27 08:24:49 · 1392 阅读 · 0 评论 -
[C++] auto类型说明符
我们经常会将表达式的值赋给变量,这就要求在变量声明时清楚地知道表达式的类型。有时候是很复杂的一件事,在C++11中引入了auto类型说明符,用它就能让编译器替我们去分析表达式所属的类型。当然,auto变量必须有初始值,这样编译器才能推断其类型: double val1 = 1.1, val2 = 2.2; auto item = val1 + val2; // item为double类型原创 2015-05-26 08:26:10 · 1170 阅读 · 0 评论 -
[C++] 引用和指向指针的引用
引用,r为变量i的引用,引用类型为int: int i = 0; int &r = i; r = 100;指针的引用,r为变量p的引用,引用的是一个指针,类型为int: int i = 42; int *p; int *&r = p; r = &i; *r = 0; cout原创 2015-05-21 21:40:09 · 788 阅读 · 0 评论 -
[C++] 字面值的类型
字符和字符串字面值前缀含义类型uUnicode 16 字节char16_tUUnicode 32 字节char32_tL宽字符wchar_tu8UTF-8char整型字面值后缀最小匹配类型u or Uunsigned原创 2015-05-19 21:56:40 · 1243 阅读 · 0 评论 -
[C++] constexpr和常量表达式
常量表达式是指值不会改变并且在编译时就能得到计算结果的表达式。比如字面值和用常量表达式初始化的const对象。const int max = 20;const int max_1 = max + 1;而如下对象则不是常量表达式:int staff = 5;const int sz = get_size();constexpr变量原创 2015-05-22 13:25:21 · 955 阅读 · 0 评论 -
[C++] 列表初始化
在C++11中,使用花括号来初始化变量得到全面的应用,也可以用花括号来对变量赋值。当用于内置类型变量时,这种初始化的一个重要特点是如果使用列表初始化且初始值存在丢失信息的风险,编译器将报错。int _tmain(int argc, _TCHAR* argv[]){ long double ld = 3.1415926536; int a{ ld }; int b = { ld };原创 2015-05-19 22:03:46 · 878 阅读 · 0 评论 -
[C++] cosnt指针-顶层const和底层const
指针本身是一个对象,它可以指向另一个对象。因此,指针本身是不是常量和指针所指的对象是不是常量就是两个独立的问题。顶层const表示指针本身是个常量。底层const表示指针所指的对象是个常量。下面所示,pi就是一个常量指针,不能修改pi的值。而pd则是一个指向常量的常量指针,既不能修改pd的值,也不能通过pd修改其指向对象的值。int i = 0;int *const pi = &原创 2015-05-22 12:59:29 · 1126 阅读 · 0 评论 -
[C++] typedef和const
如果某个类型别名指代的是符合类型,那么把它用到声明语句中可能会让人误解。比如如下的类型pstring,实际上是char*的别名: typedef char *pstring; const pstring cstr = 0; // cstr是一个指向char的常量指针 const pstring *ps; // ps是一个指针,它的对象是指向char的常量指针上述两条声明语句的原创 2015-05-25 21:44:17 · 956 阅读 · 0 评论 -
[C++11] lambda表达式
可调用对象有四种:函数、函数指针、重载了函数调用运算符的类和lambda表达式。lambda表达式表示一个可调用的代码单元,可以理解为未命名的内联函数。它具有返回类型,参数列表和函数体。lambda可以定义在函数内部。其形式如下:[capture list](parameter list) -> return type { function body }capture list 捕获列表是原创 2015-06-05 16:35:43 · 760 阅读 · 0 评论 -
[C++]对字符串向量排序
让字符串向量首先按字符串长度进行排序,长度短的在前,长的在后。如果长度相等则按字典序排序,并移除重复的字符串。去重复并按字典序排序:void elimDumps(vector &words){ // 按字典序排序 sort(words.begin(), words.end()); // unique重排输入范围,使得每个单词只出现一次 // 并排列在范围的前部,返回指向不重复区原创 2015-06-04 17:50:22 · 3405 阅读 · 0 评论 -
[C++11] 默认构造函数
类通过一个特殊的构造函数来控制默认初始化过程,这个函数就是默认构造函数,默认构造函数无需任何实参。我们可以显示的定义默认构造函数也可以让编译器为我们生成默认构造函数。默认构造函数以如下规则初始化累的数据成员:如果存在类内初始值,用它来初始化成员。否则,默认初始化该成员。class Sales_data {public: std::string bookNo; unsign原创 2015-08-18 09:53:10 · 1974 阅读 · 0 评论