C++
文章平均质量分 73
faith的运维开发之路
神爱世人,甚至将祂的独生爱子赐给我们,叫一切信祂的,不至灭亡,反得永生。
展开
-
NOMINMAX:禁用Visual C++中的 min/max宏定义
标准库在<algorithm>头中定义了两个模板函数std::min() 和 std::max()。可惜在 Visual C++ 无法使用它们,因为没有定义这些函数模板。 原因是名字min和max与<windows.h>中传统的min/max宏定义有冲突。为了解决这个问题,Visual C++ 定义了另外两个功能相同的模板:_cpp_min() 和 _cpp_ma...转载 2018-04-16 11:58:30 · 7794 阅读 · 0 评论 -
C++ std::vector中push_back操作时间复杂度分析
vector是STL中的一种序列式容器,采用的数据结构为线性连续空间,它以两个迭代器 start 和 finish 分别指向配置得来的连续空间中目前已被使用的范围,并以迭代器end_of_storage 指向整块连续空间(含备用空间)的尾端,结构如下所示: template Alloc&nbs...转载 2018-04-16 14:06:22 · 13549 阅读 · 0 评论 -
C++ 标准库中的线程安全
线程安全规则应用到标准 C++ 库中的所有类,这也包括 shared_ptr,如下所述。 有时提供更强的保证(例如,如下所述的标准 iostream 对象和专门用于多线程的类型,如 中的类型)。从多个线程读取某个对象时,该对象是线程安全的。 例如,给定对象 A,可安全地同时从线程 1 和线程 2 读取 A。如果要通过某个线程写入到对象,则必须保护相同线程或其他线程上所有对该对象的读取...原创 2018-04-16 14:07:16 · 3553 阅读 · 0 评论 -
#pragma message 和 outputdebugstr
接触新项目的时候发现一个很奇怪的情况,输出栏里竟然有除了文件名之外的文字 搜索发现,原来是下面这行代码的功劳#pragma message("需要处理xxx的功能")#pragma message(messagestring)是在编译期间,将文字串(messagestring)发送到标准输出窗口。#pragma message在编译时报告和显示信息 outputdebugs...转载 2018-04-16 14:07:55 · 773 阅读 · 0 评论 -
C++ STL容器中循环删除时erase的使用
主要是看不同容器在C++98和C++11的不同表现序列化容器C++98和C++11的vector的erase()接口没啥使用区别 从简单的测试例子讲解vector<int> vec;vec.push_back(1);vec.push_back(2);vec.push_back(3);for (vector<int>::iter...原创 2018-04-16 14:09:00 · 8381 阅读 · 0 评论