![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
c++
和道一文字_
自动驾驶
展开
-
c++检测点是否在封闭区域内
【代码】c++实现点是否在封闭区域的检测。原创 2023-10-23 20:38:40 · 221 阅读 · 0 评论 -
函数模板理解
函数模板是为了整理重载函数,提高代码的复用。包括了函数模板和类模板。class或typename为参数。是一种参数化的程序设计。并不是将参数类型作为参数传入函数模板,而是在编译过程中,根据实参的类型,推演形参的类型,此过程成为模板的实参推演,或模板的实例化。当函数传入参数为int型,则从:...原创 2022-08-26 19:44:55 · 125 阅读 · 0 评论 -
线程中常用的锁
线程之间的锁有:互斥锁、条件锁、自旋锁、读写锁、递归锁1.互斥锁用于控制多个线程对他们之间共享资源互斥访问的一个信号量。也就是说是为了避免多个线程在某一时刻同时操作一个共享资源。例如线程池中的有多个空闲线程和一个任务队列。任何是一个线程都要使用互斥锁互斥访问任务队列,以避免多个线程同时访问任务队列以发生错乱。在某一时刻,只有一个线程可以获取互斥锁,在释放互斥锁之前其他线程都不能获取该互斥锁。如果其他线程想要获取这个互斥锁,那么这个线程只能以阻塞方式进行等待。...原创 2022-08-26 15:53:48 · 305 阅读 · 0 评论 -
c++从map与unordered_map的区别到红黑树与二叉平衡树的区别
1 map与unordered_map1.1 介绍map由红黑树实现,红黑树本质上是一个带有平衡功能(不同于平衡二叉树)的二叉搜索树(完全二叉树形式存储);完全二叉树由于父节点与子节点的序列存在关系,所以其底层实现也是数组;unordered_map有哈希表实现,哈希表的本质是一个存储数据地址的数组(映射存储策略多种),所以查找效率为o(1)。1.2 区别map带有排序功能,在有有序要求的情况下使用map,其余情况unordered_map的效率都更高。2 红黑树与二叉平衡树2.原创 2022-04-11 22:15:42 · 1143 阅读 · 0 评论 -
Eigen基本用法,自查
介绍:Eigen 是一个 C++ 开源线性代数库它提供了快速的有关矩阵的线性代数运算,还包括解方程等功能在使用时,只需引入 Eigen 的头文件即可,不需要链接它的库文件基本使用://声明一个 2*3 的 float 矩阵Eigen::Matrix<float, 2, 3> matrix_23;//声明一个 三维向量 Eigen::Vector3d v_3d;Eigen::Matrix3d matrix_33 = Eigen::Matrix3d::Zero();原创 2022-03-21 16:36:33 · 1442 阅读 · 0 评论 -
leetcode56报错:error: reference to non-static member function must be called
解决办法:核心思想:修改定义方式,去掉this指针.有两种方式:1.将cmp函数定义在class之外,就不会有this指针2.将cmp定义为静态成员函数,也不会有this指针,即:原创 2022-03-21 10:23:29 · 949 阅读 · 2 评论 -
vector中push_back字符串string时报错
对于:string s;vector<string> ans;s[i]为char,vector的push_back()函数没有将char转换为string的功能.直接ans.push_back(s[i])会报错,应该:string temp = s[i];ans.push_back(temp);原创 2022-03-08 14:25:45 · 1896 阅读 · 0 评论 -
vector,string,list,map,set,queue用法自查,c++STL原理及用法
1.初始化(1) vector<int> a(10); //定义了10个整型元素的向量(尖括号中为元素类型名,它可以是任何合法的数据类型),但没有给出初值,其值是不确定的。(2)vector<int> a(10,1); //定义了10个整型元素的向量,且给出每个元素的初值为1(3)vector<int> a(b); //用b向量来创建a向量,整体复制性赋值(4)vector<int> a(b.begin(),b.begin+3); //定义了a值为原创 2022-02-24 15:57:39 · 334 阅读 · 0 评论 -
c++求整数数字的指定位的数字
例如:数字num的第cnt位数字:string str = to_string(num);char ch = str[cnt];return (int)(ch - '0');原创 2022-02-22 11:42:54 · 639 阅读 · 0 评论 -
c++unordered_map中的find()查找函数
在容器中搜索键值等于 k 的元素,如果找到,则返回一个指向该元素的迭代器,否则返回一个指向unordered_map :: end的迭代器。举例:统计vector<int> hand数组中的数字出现次数,并建立数字与出现次数的映射 unordered_map<int,int> tags_map; for(int i=0; i<n; ++i) { // 找到了,则返回对应的数字 if(tags_map.find(hand[i]) != tag原创 2021-12-30 11:54:18 · 18135 阅读 · 0 评论 -
c++vector二维数组的直接初始化
利用vector的构造写法,可直接初始化对于int型:// 将二维数组v,初始化为m行n列,全为0vector<vector<int>> v(m, vector<int>(n,0));对于bool型:// 将二维数组v,初始化为m行n列,全为falsevector<vector<bool>> v(m, vector<bool>(n,false));原创 2021-12-29 16:52:42 · 1369 阅读 · 0 评论 -
c++中优化:范围for循环,提高运行速度的方法
关于下标访问/迭代器访问的速度进行了对比,关于迭代器访问时,不能改变容器容量的原理进行了说明原创 2021-10-29 17:22:55 · 3533 阅读 · 0 评论 -
c++中emplace_back()与push_back()的区别,STL,vector,list,map
emplace_back() 和 push_back() 的区别,就在于底层实现的机制不同。push_back() 向容器尾部添加元素时,首先会创建这个元素,然后再将这个元素拷贝或者移动到容器中(如果是拷贝的话,事后会自行销毁先前创建的这个元素)。使用到了拷贝构造函数。而 emplace_back() 在实现时,则是直接在容器尾部创建这个元素,省去了拷贝或移动元素的过程。直接使用构造参数列表来添加元素的方法,它会使用到了移动构造函数 move(不用拷贝一个复制品)。源码实现的区别:_A原创 2021-10-13 11:33:10 · 1295 阅读 · 0 评论