![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
c++
文章平均质量分 67
wmm888888
这个作者很懒,什么都没留下…
展开
-
vector
vector原创 2013-12-09 15:02:00 · 813 阅读 · 0 评论 -
c++11新特性---auto 与 decltype
auto用于编译时类型推导,喜欢模板编程的人肯定很喜欢这个关键字,因为它能简化编程。我们知道变量定义时,就会为它分配内存,那么auto变量分配多大内存呢?这个要根据初始化值来定。所以auto变量定义时必须指定初始值。使用auto关键字需要注意的事项1、定义是必须初始化2、一条语句定义多个变量时,推导类型要一致如 auto i = 0, *p = &i; // 正确 auto原创 2013-12-27 09:53:57 · 771 阅读 · 0 评论 -
c++ 应该注意的问题 集锦
1、赋值与初始化是两个完全不同的概率。原创 2013-12-26 12:17:04 · 569 阅读 · 0 评论 -
使用bitset应注意的问题
template class bitset;1、同数组一样,N为bitset的类型的一部分,N必须为编译时常量。2、同数组一样,N一旦确定后就不能修改。3、当进行大量数据处理时,注意变量声明的位置。如:在内存1G的情况下,给定一个最多包含40亿个随机排列的32位整数的顺序文件,找出一个不在文件中的32位整数。这时就可以考虑用bit来代替int数据。即分配一个40亿bi原创 2014-02-21 11:53:30 · 2199 阅读 · 1 评论 -
循环中修改vector
由于vector的迭代器可能失效,所以在循环中修改vector时,一定要注意及时修改迭代器的状态。 vector vi{ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }; auto iter = vi.begin(); while (iter != vi.end()) { if (*iter % 2) { iter = vi.insert(iter,原创 2014-02-12 11:57:10 · 1540 阅读 · 0 评论 -
c++ 赋值与初始化
赋值操作符构造函数隐式转换引发歧义的语法A、B为两种类型A tA a = t;B b = t;(构造函数,或隐式转换)原创 2014-02-12 11:28:19 · 605 阅读 · 0 评论 -
c++标准库------string
要使用string, 首先要包含头文件#include 中。接下来以gnu的stl为例子,string的定义如下typedef basic_string string;typedef basic_string, allocator > wstring;typedef basic_string, allocator > u16string;typedef basic_原创 2014-02-12 10:59:53 · 1429 阅读 · 0 评论 -
stl可能使迭代器失效的操作
1、vector、string插入元素时,若引起空间重配,则迭代器、引用、指针都失效。若未引起空间重配,则插入位置之前的迭代器、引用、指针仍有效,但指向插入位置之后的迭代器、引用、指针将会失效。删除元素时,删除位置之前的迭代器、引用、指针仍有效,但删除位置之后的迭代器、引用、指针一律无效。2、deque插入元素时,若插入到除首尾位置之外的任何位置,都会引起迭代器、引用、指针原创 2014-02-12 11:43:49 · 1034 阅读 · 0 评论 -
c++中函数与指向函数的指针
c++中函数与内置数组非常相似。如:void func(int){}和int arr[10];相似点:①当把函数名当值使用时,他们会自动转换为指针。F* f = func;int* p = arr;你还可以通过typeid()来验证:templatevoid print(T t){cout }2、当它作为指针时,不需要接引用就原创 2014-02-18 11:09:04 · 683 阅读 · 0 评论 -
c++ IO库
1、c++ IO库定义了几个常用的IO类,下面列出IO库类型与头文件istream,wistream,ostream,wostream,iostream,wiostreamifstream,wifstream,ofstream,wofstream,fstream,wfstreamistringstream,wistringstream,ost原创 2014-02-18 22:57:18 · 841 阅读 · 0 评论 -
简单的事件回调机制
简单的事件回调机制用途:以回调的形式处理事件,比如:处理按钮点解事件,处理登陆事件等思路:1、回调函数形式 std::function2、回调函数存储 std::unorder_map3、由EventDispatch统一管理所有的回调函数,并负责转发事件4、所有事件派生自Event类,具体事件处理函数可以这样写:void DoEvnet2(Event_2* e)原创 2014-05-18 21:53:11 · 1067 阅读 · 0 评论 -
c++11新特性----constexpr (编译时常量)
常量表达式的值需要在编译时确定。只有字面值类型(Literal type)能被定义为constexpr。尽管指针和引用能把定义成constexpr,但他们的初始化值要求很严。一个constexpr指针的初始值必须是nullptr/0或者是存储于某个固定地址中的对象。函数体内定义的变量,一般来说没有固定地址,所以constexpr指针不能只想这样的变量。相反,所有定义在函数体之外的对象,地址原创 2013-12-26 22:22:53 · 5050 阅读 · 0 评论 -
c++ 变量
变量提供一个具名的、可供程序使用的存储空间。所以变量实际上就是给一个存储空间起了一个名字,然后我们可以用这个名字来访问这个存储空间。1、变量初始化:注意:初始化与赋值不是同一个概率。一个调用构造函数,一个调用赋值操作符。关于内建类型,若没有显示滴初始化,当它是非局部变量时,会初始化为0;否则不会初始化,也就是说,它将会是一个随机值。所以定义内建类型的变量时,最后同时也给一个初始化值。原创 2013-12-26 14:37:44 · 676 阅读 · 0 评论 -
thread joinable
bool jionable() const noexcept;用于检测线程是否joinablejoinable : 代表该线程是可执行线程。not-joinable :通常一下几种情况会导致线程成为not-joinable 1) 由thread的缺省构造函数构造而成(thread()没有参数)。 2) 该thread被move过(包括move构造和move赋值)原创 2013-12-09 16:00:59 · 8299 阅读 · 0 评论 -
std :: thread
头文件中包含两个类,thread和this_thread原创 2013-12-09 16:28:13 · 1601 阅读 · 0 评论 -
Initializer_list
1、定义 template class initializer_list2、用途 此类型用于访问初始化表中的元素。初始化表是由一系列的const T组成的表。如: auto il = { 10, 20, 30}; // 以逗号分隔,包含在一堆花括号({})内3、如要使用initializer_list,需包含头文件initializer_list>。4、初始原创 2013-12-09 15:38:48 · 1504 阅读 · 0 评论 -
std :: this_thread
this_thread 包装了一组可以访问当前线程信息的函数functions1、get_id() 获取当前线程的id。// thread::get_id / this_thread::get_id#include // std::cout#include // std::thread, std::thread::id, std::原创 2013-12-09 17:04:39 · 4670 阅读 · 0 评论 -
多线程
1、头文件 (c++11) atomic类型封装了一个公用值,并确保该值在并发操作中,执行原子操作。 该头文件定义了两个类,atomic和atomic_flag.这两个类实现了原子操作的所有性质,该头文件还声明了一组C风格的原子操作函数,用于兼容C2、类atomic :原子操作类atomic_flag :原子操作标志类3、ty转载 2013-12-10 11:13:10 · 592 阅读 · 0 评论 -
lock_free 锁无关
锁无关的(Lock-Free)数据结构——在避免死锁的同时确保线程继续C/C++ Users Journal October, 2004锁无关的(Lock-Free)数据结构在避免死锁的同时确保线程继续 Andrei Alexandrescu刘未鹏 译Andrei Alexandrescu是华盛顿大学计算机科学系的在读研究生,也是《Modern C++ Design转载 2013-12-10 10:12:51 · 719 阅读 · 0 评论 -
c++ ---- using
using 的使用分为using指示与using声明。避免在头文件使用using,最多也只能在函数或命名空间中使用。1、using 声明有效范围:从声明处至所在作用域结束。using声明可以控制哪些名字是可见的。如:using std::cin;在派生类中使用using使基类成员可见using声明语句可以出现在全局作用域,局部作用域,命名空间作用域,以及类作用域。原创 2014-01-06 17:55:32 · 700 阅读 · 0 评论 -
c++关键字
alignasalignofasmautoboolbreakcasecatchcharchar16_tchar32_tclassconstconstexprconst_castcontinuedecltypedefaultdeletedodoubledynamic_castels原创 2013-12-26 12:08:29 · 872 阅读 · 0 评论 -
聚合类
聚合类特点:可以直接访问成员,具有特定的初始化语法。聚合类需要满足以下条件:1、所以成员是public2、没有定义任何构造函数。3、没有类内初始值。4、没有基类,没有虚函数。例如:struct Data{int icalstring s;};聚合类可以用初始化表初始化成员。如 Data d = {111, "haha"}初始化表中原创 2013-12-26 21:39:09 · 1091 阅读 · 0 评论 -
c++类型转换 详解
c++类型转换详解:c++中,某些类型之间有关联。换句话说,如果两种类型可以相互转换,则他们就是关联的。如:int ival = 3.35 + 3;这里字面值3.35为double型,字面值3为int型。首先3隐式转换为double型,运算结果是6.35(double型)。接下来是初始化,初始化时又进行一步隐式转换,转换成6(int型)最后将ival初始化为6.何时发生隐式转换?原创 2013-12-26 15:51:16 · 796 阅读 · 0 评论 -
c++ 内置类型
c++基本数据类型有算数类型(arithmetic)和空类型(void)。其中算数类型包括bool,字符,整型,浮点。算数类型大致可以分为两种,一种是整型(integral type。包括bool, 字符,整型);另一种是浮点数。下面是c++内置数据类型bool, char, wchar_t, char16_t, char32_t, short, int, long, long原创 2013-12-26 11:49:59 · 1235 阅读 · 0 评论 -
do{} while(0)
在c++开源库中,do{}while()语法随处可见原创 2014-05-18 18:46:26 · 615 阅读 · 0 评论