C++11
程序员小群
技术之路最公平也最残酷的原因是:没有捷径!需要日积月累的积累,以及对技术持久的热情!!
展开
-
《C++ Template Metaprogramming》译序——经典之后的经典
https://blog.csdn.net/pongba/article/details/90643 ——写在C++图书出版史上又一部经典著作问世之前刘未鹏 /文 C++图书界沉寂久矣!至少我是这么认为的。国内引进第一批C++经典书籍的时候我是亲历的。感觉真是“忽如一夜春风来,千树万树梨花开”。别误会,我说的这个第一批并非《C++ Programming Language》...转载 2019-01-02 19:58:58 · 559 阅读 · 0 评论 -
深入理解C++枚举类型enum
参考:http://blog.csdn.net/weiwenhp/article/details/8476767http://blog.csdn.net/mtfxabc/article/details/6492423http://blog.csdn.net/lanxuezaipiao/article/details/41647333#comments为啥需要枚举类型编程语言中的所有特性都是为了满足...转载 2018-07-07 13:46:58 · 896 阅读 · 0 评论 -
C++之enum枚举量声明、定义、使用与枚举类详解
众所周知,C/C++语言可以使用#define和const创建符号常量,而使用enum工具不仅能够创建符号常量,还能定义新的数据类型,但是必须按照一定的规则进行,下面我们一起看下enum的使用方法。步骤(一)——枚举量的声明和定义(1)首先,请看下面的语句:enum enumType {Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, ...原创 2018-07-07 13:45:53 · 1031 阅读 · 0 评论 -
java加载so包,undefined symbol处理方法
undefined symbolc++filt原创 2018-07-24 21:44:32 · 1848 阅读 · 0 评论 -
哪个版本的gcc才支持c11
而知,低版本的gcc不支持c11。(而我此处的eglibc 2.17,和那人的glibc-2.16.0,都是需要支持c11的gcc的)所以此处想要去搞清楚,什么版本的,哪个版本的,gcc,才支持c11。【解决过程】1.google搜:gcc c11就可以看到:2 Language Standards Supported by GCC而明白:C89=C90:gcc选项是:-ansi, -std=c9...转载 2018-07-03 10:37:45 · 13289 阅读 · 0 评论 -
C++ search和search_n
#include <iostream> #include <algorithm> #include <array> #include <vector> #include <functional> using namespace std; int main(){ array<int,8>...原创 2018-06-20 12:01:19 · 5185 阅读 · 0 评论 -
C++的STL之search()与find_end()
1、search()search(ideq.begin(),ideq.end(), ilist.begin(), ilist.end());2、find_end()find_end(ideq.begin(), ideq.end(),ilist.begin(),ilist.end());也可以用谓词:bool checkEven(int elem, bool even){if(even)return...原创 2018-06-20 11:30:33 · 972 阅读 · 0 评论 -
C++ STL算法系列5---equal() , mismatch()
equal和mismatch算法的功能是比较容器中的两个区间内的元素。这两个算法各有3个参数first1,last1和first2.如果对 于区间[first1,last1)内所有的first1+i,first1+i和first2所在位置处的元素都相等,则equal算法返回真,否则返 回假。mismatch算法的返回值是由两个迭代器first1+i和first2+i组成的一个pair,表示第1对不...原创 2018-06-19 10:29:48 · 199 阅读 · 0 评论 -
简单的程序诠释C++ STL算法系列
https://blog.csdn.net/jerryjbiao/article/category/870957/1转载 2018-06-18 21:20:22 · 196 阅读 · 0 评论 -
copy、copy_backward和copy_if的区别
copy,copy_backward和copy_if是几种常用的泛型算法,这三个函数包含在头文件#include<algorithm>中,下面县给出三种函数的原型,再说明三者的区别。 函数原型 copy(b,e,b1),其中b,e,b1都表示迭代器类型; copy_backward(b,e,b1),其中b,e,b1都表示迭代器; c...转载 2018-06-18 18:26:25 · 451 阅读 · 0 评论 -
C++枚举类型详解
一、枚举类型的定义enum 类型名 {枚举值表};类型名是变量名,指定枚举类型的名称。枚举值表也叫枚举元素列表,列出定义的枚举类型的所有可用值,各个值之间用“,”分开。例:enum Suit { Diamonds, Hearts, Clubs, Spades }; 二、枚举变量说明枚举变量有多种声明方式:1.枚举类型定义与变量声明分开如:enum Suit { Diamonds, Hearts, ...转载 2018-07-07 14:09:22 · 496 阅读 · 0 评论 -
C++11标准库chrono
https://blog.csdn.net/u010487568/article/details/50512770chrono是C++11新加入的方便时间日期操作的标准库,它既是相应的头文件名称,也是std命名空间下的一个子命名空间,所有时间日期相关定义均在std::chrono命名空间下。通过这个新的标准库,可以非常方便进行时间日期相关操作。 chrono库主要包含了三种类型:durati...转载 2018-08-18 10:48:01 · 601 阅读 · 0 评论 -
Substitution failure is not an error
Substitution failure is not an errorFrom Wikipedia, the free encyclopediaSubstitution failure is not an error (SFINAE) refers to a situation in C++ where an invalid substitution of templateparamet...转载 2019-01-06 16:40:19 · 276 阅读 · 0 评论 -
vector查找元素
今天又忘了怎么在vector中查找某一个值。。唉。。每次都忘。。现在记下来。。(- -!)stl包括容器、迭代器和算法:容器 用于管理一些相关的数据类型。每种容器都有它的优缺点,不同的容器反映出程序设计的不同需求。容器自身可能由数组或链表实现,或者容器中的每个元素都有特殊的关键值。迭代器 用于遍历一个数据集中的每个元素。这些数据集可能是容器或者容器的子集。迭代器的主要优点是它们为任意类...转载 2018-10-29 00:40:09 · 23249 阅读 · 0 评论 -
boost::asio学习之[二]boost::asio::strand
https://blog.csdn.net/xiaoliangsky/article/details/23568671boost::asio学习之[二]boost::asio::strand2014年04月13日 00:51:38阅读数:1456 #pragma once #include <boost/bind.hpp> #inc...转载 2018-08-20 02:04:23 · 517 阅读 · 0 评论 -
C++11 中std::function和std::bind的用法
关于std::function 的用法: 其实就可以理解成函数指针 1. 保存自由函数void printA(int a){ cout<<a<<endl;}std::function<void(int a)> func;func = printA;func(2);保存lambda表达式std::function<voi...转载 2018-08-26 14:25:57 · 164 阅读 · 0 评论 -
为什么使用enable_shared_from_this——shared_ptr两类错误
https://www.cnblogs.com/jily/p/6424231.html 在使用C++实现弱回调时,订阅者应当维护一系列发布者的weak_ptr,而发布者注册回调时要传出this的shared_ptr指针,流行的实现方法是使用std::enable_shared_from_this。初次学习这个模板类时疑问了一下为什么不能依赖this直接产生一个shared_ptr?实验...转载 2018-08-18 20:02:51 · 192 阅读 · 0 评论 -
C++11新特性之十:enable_shared_from_this
https://blog.csdn.net/caoshangpa/article/details/79392878 enable_shared_from_this是一个模板类,定义于头文件<memory>,其原型为:template< class T > class enable_shared_from_this; std::enable_shar...转载 2018-08-18 16:21:32 · 217 阅读 · 0 评论 -
enable_share_from_this功能介绍
https://blog.csdn.net/csfreebird/article/details/8282518 这个类很有意思,让一个被shared_ptr管理生命周期的类能够在自己的成员函数内部访问shared_ptr。有点绕。举个例子,下面的代码在函数f内部通过this构造了shared_ptr对象,然后打印x_的值。 class B { publ...转载 2018-08-18 16:18:21 · 208 阅读 · 0 评论 -
C++:C++11新特性详解(1)
https://blog.csdn.net/linwh8/article/details/51569807前言:虽然目前没有编译器能够完全实现C++11,但这并不意味着我们不需要了解,学习它。深入学习C++11,你会发现这根本就是一门新的语言,它解决了c++98中许多遗留下来的问题。早晚会有一天,C++11便会普及大部分编译器。因此,提早做些准备也是应该的。在此我想做一个关于C++11...转载 2018-08-18 14:28:29 · 462 阅读 · 1 评论 -
【C++】C++11知识点串讲
1、long long类型C++11引入了long long类型,标准规定long long类型的长度至少是long类型的长度,即64bits,同其它类型一样,标准规定了各类型的最小长度,而编译器允许使用超过最小长度的限制。2、初始化列表int a = 0;int a(0);int a = {0}; // C++11int a{0}; // C++11C++11引入了初始化...转载 2018-08-18 14:20:19 · 375 阅读 · 0 评论 -
begin( )和cbegin( )异同
1.iterator,const_iterator作用:遍历容器内的元素,并访问这些元素的值。iterator可以改元素值,但const_iterator不可改。跟C的指针有点像。 2.const_iterator 对象可以用于const vector 或非 const vector,它自身的值可以改(可以指向其他元素),但不能改写其指向的元素值。 3.cbegin()和cend()是C++11新...原创 2018-06-18 16:19:22 · 1057 阅读 · 0 评论 -
C++/C++11中std::transform的使用
std::transform函数是将某操作应用于指定范围的每个元素。要使用std::transform函数需要包含<algorithm>头文件。 以下是对std::transform的解释:[cpp] view plain copy/* // reference: http://en.cppreference.com/w/cpp/algorithm/transform templat...转载 2018-06-18 14:00:10 · 10633 阅读 · 0 评论 -
C++11新标准之五:constexpr
常量表达式必须在编译期间计算出它的值并且 它的值不可以被改变。在C++11中,我们可以通过声明constexpr让编译器确定一个变量是不是常量表达式,声明为constexpr的变量是const类型的变量,它必须由常量表达式来初始化。例如:[cpp] view plain copyconstexpr int mf = 20; // 常量表达式 constexpr int limit = mf + ...转载 2018-06-08 09:48:26 · 165 阅读 · 0 评论 -
C++ constexpr
C++11 关键字 constexpr摘自 cppreference跟const相似,修饰的值不能被改变。constexpr 特点:constexpr指定的声明可以在编译时期求值,并且他的之不能被改变 但是 constexpr修饰的函数不一定能够在编译时期求值,如果他的参数能在编译时期求出来那么 函数值就在编译时期求出 ...原创 2018-06-08 09:29:21 · 417 阅读 · 0 评论 -
C++中的左值与右值
C++中的左值与右值一. constexpr和常量表达式 常量表达式(const expression)是指值不会改变并且在编译过程就能得到计算结果的表达式。显然,字面值属于常量表达式,用常量表达式初始化的const对象也是常量表达式。 一个对象(或表达式)是不是常量表达式由它的数据类型和初始值共同决定,例如: const int max_files = 20; // max_fi...原创 2018-06-11 15:51:17 · 337 阅读 · 0 评论 -
C++中的移动构造函数及move语句示例详解
这篇文章主要给大家介绍了关于C++中移动构造函数及move语句的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用C++具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。前言本文主要给大家介绍了关于C++中移动构造函数及move语句的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧。首先看一个小例子:#include <iostream>...原创 2018-06-11 15:29:12 · 1341 阅读 · 1 评论 -
C++11 左值、右值、右值引用详解
左值、右值在C++11中所有的值必属于左值、右值两者之一,右值又可以细分为纯右值、将亡值。在C++11中可以取地址的、有名字的就是左值,反之,不能取地址的、没有名字的就是右值(将亡值或纯右值)。举个例子,int a = b+c, a 就是左值,其有变量名为a,通过&a可以获取该变量的地址;表达式b+c、函数int func()的返回值是右值,在其被赋值给某一变量前,我们不能通过变量名找到它...原创 2018-06-11 15:14:49 · 123 阅读 · 0 评论 -
拷贝构造函数和移动构造函数
C++11之前,对象的拷贝控制由三个函数决定:拷贝构造函数(Copy Constructor)、拷贝赋值运算符(CopyAssignment operator)和析构函数(Destructor)。C++11之后,新增加了两个函数:移动构造函数(Move Constructor)和移动赋值运算符(Move Assignment opera)。我猜即使是经常用C++编程的同学也不一定听说过后两者。其实...转载 2018-06-11 15:08:54 · 3327 阅读 · 0 评论 -
*p++、(*p)++、*++p、++*p 的区别
*p++、(*p)++、*++p、++*p 的区别int a[5]={1,2,3,4,5};int *p = a;*p++ 先取指针p指向的值(数组第一个元素1),再将指针p自增1; cout << *p++; // 结果为 1 cout <<(*p++); // 1(*p)++ 先去指针p指向的值(数组第一个元素1),再将该值自增1(数组第...原创 2018-06-11 11:36:43 · 349 阅读 · 1 评论 -
C++ POD类型
POD,全称plain old data,plain代表它是一个普通类型,old代表它可以与c兼容,可以使用比如memcpy()这类c中最原始函数进行操作。C++11中把POD分为了两个基本概念的集合,即:平凡的(trival)和标准布局的(standard layout)。首先是平凡的(trival)定义,通常一个平凡的类或者结构体需要满足以下定义:拥有平凡的默认构造函数和析构函数。默认的意思就...转载 2018-06-11 11:09:56 · 461 阅读 · 0 评论 -
C++11:POD数据类型
啥是POD类型?POD全称Plain Old Data。通俗的讲,一个类或结构体通过二进制拷贝后还能保持其数据不变,那么它就是一个POD类型。平凡的定义1.有平凡的构造函数2.有平凡的拷贝构造函数3.有平凡的移动构造函数4.有平凡的拷贝赋值运算符5.有平凡的移动赋值运算符6.有平凡的析构函数7.不能包含虚函数8.不能包含虚基类[cpp] view plain copy#include "stdaf...转载 2018-06-11 11:04:19 · 209 阅读 · 0 评论 -
constexpr和常量表达式
一、含义1、常量表达式:指值不会改变并且在编译过程就能得到计算结果的表达式。 如:const int max_files = 20; //max_files是常量表达式const int limit = max_files + 1; //limit是常量表达式int staff_size = 27; //staff_size不是常量...原创 2018-06-08 10:50:24 · 156 阅读 · 0 评论 -
c++11新特性----constexpr (编译时常量)
常量表达式的值需要在编译时确定。只有字面值类型(Literal type)能被定义为constexpr。尽管指针和引用能把定义成constexpr,但他们的初始化值要求很严。一个constexpr指针的初始值必须是nullptr/0或者是存储于某个固定地址中的对象。函数体内定义的变量,一般来说没有固定地址,所以constexpr指针不能指向这样的变量。相反,所有定义在函数体之外的对象,地址都是固定...原创 2018-06-08 11:06:50 · 880 阅读 · 0 评论 -
C++标准库---transform()
transform算法transform()提供以下两种能力:1.第一形式有4个参数,把源区间的元素转换到目标区间。也就是说,复制和修改元素一气呵成;2.第二形式有5个参数,将前两个源序列中的元素合并,并将结果写入目标区间。注意:含有修改元素,仅仅只做复制元素,可以使用copy()。第一种形式transform(sourceBeg,sourceEnd,destBeg,op)(1)针对源区间[sou...原创 2018-06-18 13:58:52 · 511 阅读 · 0 评论 -
std bind 原理简单图解(清晰简明)
本文解释了bind 是如何工作的。为了清晰,我对图中的语法作了一些简化(例如,省略函数调用操作符的参数类型),并且简化了 bind 的实现.bind 可以用来将用户提供的需要一个参数的函数转换成不需要参数的函数对象。绑定的值(在这个例子中是123)存储在函数对象内并且会被自动传递给用户指定的函数:参数绑定也可以用于将类成员函数转换成零参数的函数对象。猿类们都知道,非静态成员函数需要一个隐式的 th...转载 2018-06-17 10:41:14 · 4711 阅读 · 0 评论 -
std::bind与std::function详解
std::bind1、定义bind(F f, T1 t1, T2 t2, ..., TN tN);具体为:bind(&要调用的函数,&对象, 要调用函数的参数1,要调用函数的参数2...,_1(bind函数的参数1),_2(bind函数的参数2)...)注:如果bind的是一个非静态成员函数,第二个参数一定是一个该成员的一个指针,后面才是正常的参数。2、bind使用形式(1)bin...转载 2018-06-16 10:17:10 · 341 阅读 · 0 评论 -
C++11 中std::function和std::bind的用法
关于std::function 的用法: 其实就可以理解成函数指针 1. 保存自由函数void printA(int a){ cout<<a<<endl;}std::function<void(int a)> func;func = printA;func(2);12345678保存lambda表达式std::function<void...转载 2018-06-16 10:15:50 · 202 阅读 · 0 评论 -
C++11新特性之std::function & std::bind
std::function 在c++98&03时我们通常使用回调函数来处理一些需要某种场景下才触发的回调操作,但回调函数有一个限制就是它只能赋值给同类型的全局或者静态函数,对于其他有相同的返回值和相同类型参数的成员函数不能赋值。[cpp] view plain copy#include <iostream> using namespace std; //define a...原创 2018-06-16 10:14:26 · 208 阅读 · 0 评论 -
C++中字面值常量和字面值类型
一个形如42的值被称为字面值常量。字面值常量的形式和值决定了常量的类型。例如0x42是16进制表示的整型常量。‘a'是char型字面值。字面值常量顾名思义由字面意思表示,是常量。字面值常量在程序中是直接表示的,整型直接写出大小,字符直接写出字符。一个字面值常量在编译时被直接解析为立即数,编译器内部维护字面值常量的类型。 常量表达式是指在编译和执行过程中,该表达式的值不会改变,且编译过...原创 2018-06-08 23:04:00 · 547 阅读 · 1 评论