c++
Let'sCode
搬砖,搬砖,再搬砖
展开
-
unique_ptr的使用
初始化unique_ptrunique_ptr实现独占式拥有或严格拥有概念,保证同一时间内只有一个智能指针可以指向该对象。当unique_ptr被销毁时,它所指向的对象也会被销毁。由于unique_ptr不可拷贝和赋值,初始化unique_ptr必须使用直接初始化的方式。c++14正式引入的make_unique,所以我们在初始化的时候尽量使用make_unique,而不是不直接使用new,具体原因参考这篇文章。另外unique_ptr还有更聪明的地方:当程序试图将一个 unique_ptr 赋值给另一原创 2021-12-09 15:16:49 · 2744 阅读 · 0 评论 -
C++处理输入流中以逗号或者空格分隔的数据
一、cin和getline同时使用易错点当 cin 读取数据时,它会传递并忽略任何前导白色空格字符(空格、制表符或换行符)。一旦它接触到第一个非空格字符即开始阅读,当它读取到下一个空白字符时,它将停止读取。在使用getline读入一整行时,若是前面是使用getchar()、cin这类读入了一个字母,但是不会读入后续换行’\n’符号或者空格的输入时,再接getline()就容易出现问题。比如: /* 输入 : 1one */#include <iostream>#include &原创 2021-11-17 15:45:39 · 16307 阅读 · 0 评论 -
如何通过 CMakeLists.txt 将参数传到代码里面
直接看代码, 将BUILD_ROS传到 hello.cpp 里面。hello.cpp 代码如下:#include <iostream>int main(){ #if BUILD_ROS { std::cout<<"hello ros"<<std::endl; } #else { std::cout<<"hello world"<<std::endl; } #endif r原创 2021-08-30 11:49:29 · 1393 阅读 · 1 评论 -
c++11 less和greater用办法
#include <algorithm>#include <functional>#include <limits>#include <set>#include <iostream>#include <vector>using namespace std;/*template <class T> struct less{ bool operator()(const T& x, const T&原创 2021-07-26 10:43:53 · 509 阅读 · 0 评论 -
c++ unordered_set,unordered_map中自定义哈希函数
unordered_map定义如下:template<class Key, class Ty, class Hash = std::hash<Key>, class Pred = std::equal_to<Key>, class Alloc = std::allocator<std::pair<const Key, Ty> > > class unordered_map; > class u原创 2021-04-20 11:29:39 · 3734 阅读 · 1 评论 -
map中的insert问题以及常见操作
#include <map>#include <iostream>#include <string>using namespace std;struct cmp{ bool operator()(pair<int,string> p, pair<int,string> q) { return p.first > q.first; }};int main(){ //unordered_map<int, s原创 2021-04-06 10:45:54 · 879 阅读 · 0 评论 -
namespace和max_element仿函数写法杂记
匿名namespace命名空间可以是匿名的,此时该匿名命名空间实际也是作用于默认命名空间中的, 只是相当于对该名空间下的标识符添加了static修饰词,使其仅作用于本文件。namespace {const double kStBoundaryDeltaS = 0.2; // metersconst double kStBoundarySparseDeltaS = 1.0; // metersconst double kStBoundaryDeltaT = 0.05; /原创 2021-03-23 11:16:07 · 137 阅读 · 0 评论 -
树的三种遍历方法的个人理解及代码实现
树的三种遍历方法:前序,中序和后序及其代码实现。在此分别总结先序,中序,后序的结点输出顺序。个人记忆理解:这三种遍历顺序都是相对于根节点的访问顺序来命名的。先序:1.访问根结点2.访问左子树3.访问右子树中序:1.访问左子树2.访问根结点3.访问右子树访问左子树。【先访问左子树中的左子树,再访问左子树中的右子树。】直到访问到叶子结点后输出。输出根。访问右子树。【先访问右子树中的左子树,再访问右子树中的右子树。】直到访问到叶子结点后输出。后序:1.访问左子树2.访问右子树3.原创 2021-03-01 11:19:36 · 976 阅读 · 0 评论 -
C++随机数
C++ 库有一个名为 rand() 的函数,每次调用该函数都将返回一个非负整数。要使用 rand() 函数,必须在程序中包含 头文件。以下是其用法示例:randomNum = rand();该算法需要一个起始值,称为种子,以生成数字。如果没有给出一个种子,那么它将在每次运行时产生相同的数字流。//This program demonstrates using the C++ time function//to provide a nseed,T for the random number gen原创 2021-02-23 15:41:59 · 119 阅读 · 0 评论 -
STL迭代器适配器
通过学习 C++ STL 标准库中的容器我们知道,无论是序列式容器还是关联式容器(包括哈希容器),要想遍历容器中存储的数据,就只能用使用该容器模板类中提供的迭代器。STL迭代器适配器种类反向迭代器(reverse_iterator)又称“逆向迭代器”,其内部重新定义了递增运算符(++)和递减运算符(–),专门用来实现对容器的逆序遍历。安插型迭代器(inserter或者insert_iterator) 通常用于在容器的任何位置添加新的元素,需要注意的是,此类迭代器不能被运用到元素个数固定的容器(比如原创 2021-02-22 15:59:38 · 148 阅读 · 0 评论 -
STL 容器适配器用法
一、stack栈中存储的元素满足后进先出(简称LIFO)stack 适配器的开头端通常称为栈顶。每次只能访问适配器中位于最顶端的元素,也只有移除 stack 顶部的元素之后,才能访问位于栈中的元素#include <stack>using namespace std;stack<T,Container=deque> 模板类提供了 2 个参数,通过指定第二个模板类型参数只要该容器支持 empty()、size()、back()、push_back()、pop_back(原创 2021-02-22 15:04:13 · 420 阅读 · 0 评论 -
priority_queue理解与使用
描述在优先队列中,元素被赋予优先级。当访问元素时,具有最高优先级的元素在顶部。优先队列具有最高级先出 (first in, largest out)的行为特征。优先队列有三个参数,其声明形式为:priority_queue< type, container, function >这三个参数,后面两个可以省略,第一个不可以。其中:type:数据类型;container:实现优先队列的底层容器;function:元素之间的比较方式;对于container,要求必须是数组形式实原创 2021-01-29 17:44:21 · 206 阅读 · 0 评论