
c++点点滴滴
c++
3TV
很容易忘记做过的东西,那就记下来吧
展开
-
C++ vector的reserve和resize
vector 的reserve增加了vector的capacity,但是它的size没有改变!而resize改变了vector的capacity同时也增加了它的size!原因如下: 1.reserve是容器预留空间,但在空间内不真正创建元素对象,所以在没有添加新的对象之前,不能引用容器内的元素。加入新的元素时,要调用push_back()/insert()函数。 2.resize是改变容器的大小,且在创建对象,因此,调用这个函数之后,就可以引用容器内的对象了,因此...原创 2021-04-27 18:08:33 · 369 阅读 · 0 评论 -
基础的CMakeLists.txt的样例
cmake_minimum_required(VERSION 2.8)project(inpainting)find_package(OpenCV REQUIRED)include_directories(${OpenCV_INCLUDE_DIRS} "inc")#这部分是c++11的设置if(CMAKE_VERSION VERSION_LESS "3.1") if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU") set(CMAKE_.原创 2021-04-22 15:20:04 · 208 阅读 · 0 评论 -
substr()函数
主要功能是复制子字符串,要求从指定位置开始,并具有指定的长度定义和用法basic_string::substr basic_string substr(size_type _Off = 0,size_type _Count = npos) const;参数 _Off:所需的子字符串的起始位置。字符串中第一个字符的索引为 0,默认值为0 _Count:复制的字符数目 返回值:一个子字符串,从其指定的位置开始备注 如果没有指定长度_Count或_Count+_Off超出了源字符串的长度,则原创 2020-05-20 15:21:55 · 543 阅读 · 0 评论 -
堆栈队列
1. 栈又称为堆栈,使用的是一级缓存,栈是向低地址扩展的数据结构,是一块连续的内存的区域,是数据暂时储存的地方,栈中元素个数为零时称为空栈,它是一种运算受限的线性表,仅允许在表的一端进行插入和删除运算(遵循先进后出原则),此端为栈顶,另一端为栈底。向一个栈插入新元素又称作进栈,入栈或压栈,它把新元素放到栈顶元素的上面,称为栈顶元素;从一个栈删除元素又称作出栈或退栈。由操作系统自动分配释放 ,存放函数的参数值,局部变量的值等。存取速度比堆要快,但存在栈中的数据大小与生存期必须是确定的,缺乏灵活性2.原创 2020-05-18 14:44:49 · 377 阅读 · 0 评论 -
std::tuple\ std::tie\std::ignore
std::uple即元组,可以理解为pair的扩展,可以用来将不同类型的元素存放在一起,常用于函数的多返回值。定义与初始化tuple可以使用初始化列表进行赋值。 tuple<int,double,string> t3 = {1, 2.0, "3"};访问可以使用get<常量表达式>(tuple_name)来访问或修改tuple的元素(返回引用) ...转载 2019-12-03 16:35:00 · 751 阅读 · 0 评论 -
计时函数 opencv/c++
1.OpenCV——core.hppgetTickCount()和getTickFrequency() 。getTickCount()函数返回CPU自某个事件以来走过的时钟周期数; getTickFrequency()函数返回CPU一秒中走过的时钟周期数;double time0=static_cast<double>(cv::getTickCount());...原创 2019-10-29 17:43:23 · 310 阅读 · 0 评论 -
c++中去掉vector或者数组中的重复元素
vector<int> res = { 2, 3, 4, 5, 2, 3, 4, 5 }; std::cout << "移除之前,res数组中元素的个数:" << res.size() << std::endl; sort(res.begin(), res.end()); res.erase(unique(res.b...原创 2019-10-28 14:22:38 · 2054 阅读 · 0 评论 -
std的时间计算
#include<chrono>-----------------------------------------1--------------------------------------------std::chrono::steady_clock::time_point start = std::chrono::steady_clock::now();//开始时间===...原创 2019-01-11 14:26:45 · 1841 阅读 · 0 评论 -
C++中的动态数组
在C++编程中,使用new创建数组然后用delete来释放。一、创建并释放一维数组#include<iostream>using namespace std;int main(){ int n; cin>>n; //分配动态一维数组 int *arr=new int[n]; for(int i=0;i<...原创 2019-01-10 18:07:08 · 625 阅读 · 0 评论 -
Effective c++(01,02)
条款一:视C++为一个语言联邦 条款二:尽量以const、enum、inline替换#define1、你所使用的名称可能并未进入记号表,从而带来一些编码和理解上的困惑。#define ASPECT_RATIO 1.635记号名ASPECT_RATIO可能从未被编译器看到;也许在编译器开始处理源码之前他就被预处理器移走了,于是记号名称ASPECT_RATIO从未进入记号表...原创 2018-09-28 20:47:44 · 220 阅读 · 0 评论 -
轻松理解pthread_cond_wait和pthread_cond_signal的使用
原文:https://blog.youkuaiyun.com/yeyuangen/article/details/37593533 LINUX环境下多线程编程肯定会遇到需要条件变量的情况,此时必然要使用pthread_cond_wait()函数。但这个函数的执行过程比较难于理解。 pthread_cond_wait()的工作流程如下(以MAN中的EXAMPLE为例): Conside...转载 2018-12-17 14:24:46 · 2560 阅读 · 0 评论 -
cmakelist中区分debug和release下对应的库版本
add_library(${LIBRARY_NAME} ${SOURCES} ${HEADERS})//生成一个对应的Debug库,用来与Release版本的库区分set_target_properties(${LIBRARY_NAME} PROPERTIES OUTPUT_NAME "${LIBRARY_NAME}$<$<CONFIG:Debug>:_d>" )这样,...原创 2018-10-09 10:16:17 · 7261 阅读 · 0 评论 -
pthread_mutex_lock用法(转)
条件变量 条件变量是利用线程间共享的全局变量进行同步的一种机制,主要包括两个动作:一个线程等待"条件变量的条件成立"而挂起;另一个线程使"条件成立"(给出条件成立信号)。为了防止竞争,条件变量的使用总是和一个互斥锁结合在一起。 条件变量是利用线程间共享的全局变量进行同步的一种机制,主要包括两个动作:1)一个线程等待"条件变量的条件成立"而挂起;2)另一个线程使"条件成立"(给...转载 2018-09-29 14:38:50 · 57610 阅读 · 7 评论 -
pthread_cond_wait()
pthread_cond_wait() 用于阻塞当前线程pthread_cond_signal()或pthread_cond_broadcast()来唤醒pthread_cond_wait() pthread_cond_wait() 必须与pthread_mutex 配套使用。pthread_cond_wait()函数一进入wait状态就会自动release mutex。当其他线...原创 2018-10-11 14:35:33 · 201 阅读 · 0 评论 -
c++回调函数/ROS回调函数
以下均是个人在实际耕码的过程中遇到的问题和整理的结果,可能会有不对的地方,望各位指正与交流-------------------------------------------------我会有喵的---------------------------------------------------c++中的回调函数:A "callback" is any function th...原创 2018-01-09 10:15:58 · 11668 阅读 · 2 评论