c++11 新增内容每日学习笔记
来源:互联网 发布:蒙文软件下载 编辑:程序博客网 时间:2024/06/05 03:02
decltype自动类型推定。decltype接受一个表达式,返回表达式的类型。可以接受最高层的修饰符,比如:const int i; decltype(i) c = I; c 类型为const int 类型
如果decltype中的参数被括号括起来,则被定义为,reference类型。
如果decltype((variable))则,定义的类型总是reference类型
constexpr 常量表达式。
int *const p = nullptr; //p is aconst pointer to int
定义别名 :
using SI = int; //SI 为新类型名,和int类型相同。 g++ 调试通过。VS2012不支持
const int *p = nullptr; // p is a pointer to a const int
constexpr int *q = nullptr; // q isa const pointer to int
在g++4.7上调试,int j = 0; constexpr int *p1 = &j; //未调式通过。
constexpr 定义函数时,返回值必须是字面值。
default 关键字
设置默认构造函数时使用。在类中定义了构造函数后,还想继续使用默认构造函数,则可以在函数成员列表后添加 =default ;
struct Sales_data {
// constructors added
Sales_data() = default;
C++ Primer, Fifth Edition
Sales_data(conststd::string &s){}
};//VS2012 调试不通过,g++4.7通过
emplace//在容器中插入元素。后边的元素依次向后移动。
template <class... Args>
iterator emplace (const_iterator position,Args&&... args);在指定的位置插入元素。
emplace_back(SS);在容器尾部插入元素SS
auto 关键字, 可以直接声明对象,且该对象的类型由对象的初始化表达式推定出来。
使用auto关键字时,必须有初始化式。auto 普通类型不接受最高层修饰符
const int ci =i, &cr = ci;
auto b =ci; // b is an int (top-level const in ci is dropped)
auto c =cr; // c is an int (cr is an alias for ci whose const is top-level)
auto d =&i; // d isan int*(& of an int object is int*)
auto e =&ci; // e is const int* (& of a const object is low-level const)
显式指定删除及显式指定缺省的函数声明 具备如下函数形式:
struct A{
A()=default; //C++11
virtual ~A()=default; //C++11
};
称之为缺省的函数。“=default;”记号部分指示编译器生成函数的缺省实作体。缺省的函数有两处优势:其一,比手工实作出来的代码更有效率,其二,把程序员从手工定义那些函数所引发的琐细事务中解脱出来。
与缺省函数对应,也存在指定删除函数:
int func()=delete;
声明删除的函数在防止复制对象的方面尤其有用。C++类自动声明一个复制构造函数和一个赋值操作。要禁止这种默认行为,使用记号=delete:
struct NoCopy{
NoCopy & operator =( constNoCopy & ) = delete;
NoCopy ( const NoCopy & ) =delete;
};
NoCopy a;
NoCopy b(a); //compilation error,copy ctor is deleted
容器类:
forward_list //前向list
内部实现指向下一个元素只有一个指针。而list有两个。插入,移动,提取元素,比其他顺序容器效率高。确定是不支持随机存取。
vector中增加shrink_to_fit 函数,可以缩小容量,使其和size大小相同。
增加data函数
value_type* data() noexcept;
const value_type* data() const noexcept;
可以利用偏移量进行访问vector中的元素。
int* p =myvector.data();
*p = 10;
++p;
*p = 20;// p 移动到myvector[1]的位置。
p[2] = 100; //相对于p所指位置2单位的偏移量.也就是现在的myvector[3]
- c++11 新增内容每日学习笔记
- 每日学习笔记
- 每日学习笔记(1)
- 每日学习笔记(2)
- 每日学习笔记(3)
- 每日学习笔记(4)
- 每日学习笔记(5)
- 每日学习笔记(12)
- 每日学习笔记(13)
- 每日学习笔记(14)
- 每日学习笔记(15)
- 每日学习笔记(17)
- 每日学习笔记(18)
- 每日学习笔记(19)
- 每日学习笔记(20)
- 每日学习笔记(21)
- 每日学习笔记(23)
- Android 每日学习笔记
- singelton------单例模式
- 动态PE和静态PE计算
- 判断目录是否存在并创建mkdir
- 微软等名企面试题--C++篇
- Java并发编程之同步互斥问题
- c++11 新增内容每日学习笔记
- 关于读写锁算法的Java实现及思考
- extnet mvc direct method
- Java探索:Java内存区域
- Qt限制文本框变化输入条件的方法
- 插值排序法排序数组
- Tomcat 7.0 Manager 访问需要用户名与密码
- 重命名数据库服务器
- 第十二堂课后作业