std

C++11新特性之std::function和bind绑定器

在C++中,存在可调用对象这一个概念,可调用对象有以下几种定义: (1).是一个函数指针 (2).是一个具有operator()成员函数的类对象(仿函数) (3).是一个可被转换为函数指针的类对象 (4).是一个类成员(函数指针) 一、可调用对象包装器 std::function std::func ......
function 特性 bind std 11

cpp get exact time and precision reach nanoseconds via std::chrono::high_resolution_clock

#include <chrono> #include <ctime> #include <iomapip> #include <iostream> #include <sstream> std::string get_time_now() { std::chrono::time_point<std: ......

std::forward完美转发

std::forward被称为完美转发,它的作用是保持原来的值属性不变。 啥意思呢?通俗的讲就是,如果原来的值是左值,经std::forward处理后该值还是左值;如果原来的值是右值,经std::forward处理后它还是右值。 简单样例如下: #include <iostream> templat ......
forward std

c++ 多线程编程std::thread, std::shared_mutex, std::unique_lock

在C++11新标准中,可以简单通过使用thread库,来管理多线程,使用时需要#include <thread>头文件。 简单用例如下: 1 std::thread(Simple_func); 2 std::thread t(Simple_func); 3 t.detach(); 第一行是直接启动一 ......
std 线程 shared_mutex unique_lock shared

C++11 std::function及std::bind用法

类似于c语言中的函数指针,C++11中,提供了一个通用的描述方法,就是std::function。 std::function可以hold住任何可以通过“()”来调用的对象,包括: 普通函数 成员函数 lambda std::bind std::function的语法格式为: template <c ......
std function bind 11

C++标准库中的std::nth_leement

std中的nth_element 默认求的是数组中第 n 小的元素 可以通过参数传入,求第 n 大的元素 示例代码 #include <algorithm> #include <iostream> #include <vector> using namespace std; int main(int ......
nth_leement leement 标准 std nth

c++11 std::thread 线程实例在退出后管理线程调用join()后再新建线程将可能会产生相同std::thread::id的实例

[03-28 16:52:54.372] [info] [vthread.cpp:92 operator()()] create new thread,id:4,tid:7f5cbb7fd640,inroduce:test vthread 003[03-28 16:52:54.372] [info] ......
线程 实例 thread std join

C++17:实现动态类型std::any

1、通过void*或继承实现动态类型 struct A { }; struct B { }; struct C :A { }; struct D :A { }; int main() { //万能指针void* void* p = new A(); p = new B(); p = new vect ......
类型 动态 std any 17

C++11:实现std::tuple

1、实现基础功能 #include <iostream> #include <string> using namespace std; template<typename... Ty> struct Tuple; template<> struct Tuple<> {}; /* template<t ......
tuple std 11

在大型项目中为什么不能用using namespace std;

在大型项目中,使用using namespace std;会存在以下几个问题: 命名冲突:使用using namespace std;会将所有std命名空间下的名称都引入当前命名空间,可能会与当前项目中的其他标识符冲突,导致编译错误。 可读性差:如果在项目中使用大量的命名空间,代码可能会变得难以阅读 ......
namespace 项目 using std

C++中std::function常见用法

C++标准库中的std::function是一个通用的函数封装,可以用来存储、复制、调用任何可调用对象(函数、函数指针、成员函数指针、lambda表达式等)。以下是std::function的一些常见用法: 定义std::function类型std::function类型的定义类似于函数指针类型,例 ......
function 常见 std

std::vector::clear()方法真的会清除元素吗?

测试 编译这样一段代码 int main() { std::vector<size_t> vec{1,2,3}; std::cout << vec.data() << std::endl; std::cout << *vec.data() << std::endl; std::cout << vec ......
元素 方法 vector clear std

原生数组、std::array、std::vector访问性能对比

先上结论: std::vector的at()操作最慢。其时间约达其他访问方式的2~4倍。原生数组和std::vector的[]访问较快。std::array的访问速度介于中间,约是原生的2倍。 具体测试方法: 主要测试读取和赋值访问,结果中: t1 - std::array的at()时间 t2 - ......
数组 std 性能 vector array

浅谈 C++ 模板 & 泛化 (妈妈再也不用担心我不会用 std::sort 了)

基础复习 先上个对 int 类型数组的插入排序: void insertionSort_01(int* seq, int firstIndex, int lastIndex) { for (int j = firstIndex + 1; j <= lastIndex; ++j) { int key ......
不用 模板 妈妈 sort amp
共194篇  :7/7页 首页上一页7下一页尾页