菜鸟笔记
提升您的技术认知

C++ 笔记 第44页

C++ 11的移动语义

菜鸟阅读 : 4734赞(1)

可拷贝和可移动的概念 在面向对象中,有的类是可以拷贝的,例如车、房等他们的属性是可以复制的,可以调用拷贝构造函数,有点类的对象则是独一无二的,或者类的资源是独一无二的,比如 IO 、 std::unique_ptr等,他们不可以复制,但是可...

C++中的异常安全性

菜鸟阅读 : 2421赞(0)

一个函数如果说是“异常安全”的,必须同时满足以下两个条件:1.不泄漏任何资源;2.不允许破坏数据。 我们先通过两个反面的例子开始。 第一个是造成资源泄漏的例子。一个类Type,内含一个互斥锁成员 Mutex mutex,以及一个成员函数vo...

C++多线程编程实例

菜鸟阅读 : 3153赞(0)

     多线程在编程中有相当重要的地位,我们在实际开发时或者找工作面试时总能遇到多线程的问题,对多线程的理解程度从一个侧面反映了程序员的编程水平。   其实C++语言本身并没有提供多线程机制(当然目前C++ ...

C++11线程中的几种锁

菜鸟阅读 : 4584赞(1)

线程之间的锁有:互斥锁、条件锁、自旋锁、读写锁、递归锁。一般而言,锁的功能与性能成反比。不过我们一般不使用递归锁(C++标准库提供了std::recursive_mutex),所以这里就不推荐了。 互斥锁(Mutex) 互斥锁用于控制多个线...

C++ 单例模式总结与剖析

菜鸟阅读 : 3943赞(0)

C++ 单例模式总结与剖析 单例可能是最常用的简单的一种设计模式,实现方法多样,根据不同的需求有不同的写法; 同时单例也有其局限性,因此有很多人是反对使用单例的。本文对C++ 单例的常见写法进行了一个总结, 包括懒汉式、线程安全、单例模板等...

C++ unordered_map的使用

菜鸟阅读 : 3891赞(0)

std::unordered_map(C++11) template < class Key, // unordered_map::key_type class T, // unordered_map::mapped_type class ...

一种高效的 vector 四则运算处理方法

菜鸟阅读 : 2772赞(0)

实现 vector 的四则运算 这里假设 vector 的运算定义为对操作数 vector 中相同位置的元素进行运算,最后得到一个新的 vector。具体来说就是,假如 vector d1{1, 2, 3}, d2{4, 5, 6};则, ...

c++中的左值与右值

菜鸟阅读 : 3798赞(0)

左值(lvalue)和右值(rvalue)是 c/c++ 中一个比较晦涩基础的概念,不少写了很久c/c++的人甚至没有听过这个名字,但这个概念到了 c++11 后却变得十分重要,它们是理解 move/forward 等新语义的基础。 左值右...

C++ 左值 右值

菜鸟阅读 : 2708评论(0)赞(0)

定义 早期的C给出的定义:左值是一个表达式,可能出现在赋值操作的左边或右边,但右值只能出现在右边。比如: a * b = 42; // 编译错误, 说明 a * b 不是左值 因为上面的定义实在太模糊,导致左值和右值很难被理解,下面给出的定...

extern关键字

菜鸟阅读 : 7226赞(0)

1. 基本含义:声明外部对象 声明对象是一个外部对象(变量或函数),标识其定义在别的文件中。会被多个文件使用的对象通常用extern声明于头文件中。 用法eg. extern int var; 2. extern “C”:链接指示 声明对象...