C++
C++小工具、学习过程
再路上1216
这个作者很懒,什么都没留下…
展开
-
关联容器map使用结构体
然后,创建了一个 std::map,其键类型为 Person,值类型为 std::string(表示职业信息)。传递性:对于任何非空集合中的任意元素 a、b 和 c,如果 a < b 为真且 b < c 为真,那么 a < c 也为真。可比较性:对于任何非空集合中的任意元素 a 和 b,a < b、a == b 或 b < a 之中至少有一个为真。对称性:对于任何非空集合中的任意元素 a 和 b,如果 a < b 为真,那么 b < a 为假。),以便 std::map 能够确定键之间的顺序。原创 2024-07-25 16:16:33 · 404 阅读 · 0 评论 -
for循环使用auto 和 cosnt auto &
为了减少拷贝的开销,auto&最好,如果只是读取而不修改,再加上const即可。for(const auto &x : range)// 只读元素(无法修改)for(auto &&x : range)// 修改元素。for(auto x : range) // 拷贝元素。原创 2024-06-28 16:28:50 · 211 阅读 · 0 评论 -
ssh: connect to host github.com port 22: Connection refused fatal
如果没有config 文件就新建一个。.com的端口号22拒绝连接。可以使用github的。原创 2024-04-15 16:41:31 · 303 阅读 · 0 评论 -
C语言结构体大小
3、对齐的目的是为了。原创 2024-04-08 11:19:30 · 145 阅读 · 0 评论 -
C++ 构造函数 成员变量私有 C++指针成员变量的优点
C++私有成员变量 C++指针成员变量的优点原创 2023-01-04 10:10:29 · 606 阅读 · 0 评论 -
C++ 链表 增删查改
C++链表增删查改原创 2022-12-07 15:54:54 · 913 阅读 · 0 评论 -
C++ 固定数字位数输出
C++ 固定数字位数输出原创 2022-08-17 12:21:11 · 4345 阅读 · 0 评论 -
C++ 多线程学习(二) 互斥锁std::mutex
在多线程中经常会遇到多个线程同时修改同一个变量的情况,这个时候如果不对线程进行一定约束,很可能会导致意想不到的结果。例如有两个线程1和线程2,线程2的输入是线程1的结果。很显然如果在主线程中同时开启了线程1和线程2,像上面那样,它们是同时运行的,会直接导致程序的崩溃。所以线程同步锁应运而生,当遇到它时它会让当前线程独占某个变量,其它同样需要修改该变量的线程此时只能处于等待状态,等到当前线程结束之后,线程独占锁自动释放,其它线程可以修改内容。#include<thread> #inclu原创 2022-03-10 14:06:52 · 1198 阅读 · 0 评论 -
C++ queue容器适配器
只能访问 queue<T> 容器适配器的第一个和最后一个元素。只能在容器的末尾添加新元素,只能从头部移除元素。std::queue: 模板类queue定义在<queue>头文件中。队列(Queue)是一个容器适配器(Container adaptor)类型,被特别设计用来运行于FIFO(First-in first-out)场景,在该场景中,只能从容器一端添加(Insert)元素,而在另一端提取(Extract)元素。只能从容器”后面”压进(Push)元素,从容器”前面”提取(Pop原创 2022-03-09 21:58:49 · 186 阅读 · 0 评论 -
C++ 条件运算符 ?
Exp1 ? Exp2 : Exp3;其中,Exp1、Exp2 和 Exp3 是表达式。请注意冒号的使用和位置。? : 表达式的值取决于 Exp1 的计算结果。如果 Exp1 为真,则计算 Exp2 的值,且 Exp2 的计算结果则为整个 ? : 表达式的值。如果 Exp1 为假,则计算 Exp3 的值,且 Exp3 的计算结果则为整个 ? : 表达式的值。? 被称为三元运算符,因为它需要三个操作数.#include <iostream>using namespace st.原创 2022-03-09 16:35:30 · 437 阅读 · 0 评论 -
C++ Lambda函数
lambda函数(无名函数)比较简短,且整个项目不复用(只用一次);1、为进行排序算法,比较两个数大小时(sort函数)#include <iostream>#include <vector>#include <algorithm>using namespace std;bool compare(int& a, int& b){ return a > b;}int main(void){ int dat原创 2022-03-09 14:12:34 · 1243 阅读 · 0 评论 -
vscode C++ HelloWorld编译和调试
环境:ubantu18.04 vscode一、打开vscode,安装C++扩展确保已经安装gccgcc -v#如果没安装sudo apt update # 更新软件包源 sudo apt-get install build-essential gdb二、hello创建文件夹hello,并在该文件夹下打开vscode新建文件hello.cpp#include <iostream>#include <vector>#i.原创 2022-02-21 16:20:22 · 2241 阅读 · 0 评论 -
C++ 多线程(一)
线程算是一个底层的,传统的并发实现方法。C++11中除了提供thread库,还提供了一套更加好用的封装好了的并发编程方法。#include <iostream>#include <vector>#include <algorithm>#include <thread>using namespace std; //线程要做的事情就写在这个线程函数中void GetSumT(vector<int>::iterator first,v原创 2022-02-17 14:44:18 · 407 阅读 · 0 评论 -
复习C++ sort函数(从大到小排序)
#include<iostream>#include<algorithm>using namespace std;bool comp(int a,int b);main(){ //sort函数第三个参数自己定义,实现从大到小 int a[]={45,12,34,77,90,11,2,4,5,55}; sort(a,a+10,cmp); for(int i=0;i<10;i++) cout<<a[i]<<" ";}//.原创 2022-02-17 10:15:10 · 462 阅读 · 0 评论 -
C++ 模板函数
C++模板类:可以自动更改数据类型#include <stdio.h>#include <iostream>using namespace std;template <typename tem> //自定义得类型Ttem find_max(tem arr[], int len){ tem val = arr[0]; ...原创 2019-07-16 15:55:07 · 98 阅读 · 0 评论 -
vector「」.resize(int num)
转载是为了更好的学习,感谢原创大佬,感谢原创大佬,感谢原创大佬。看了公司几个前辈的代码,发现他们特别喜欢用Vector,而且总喜欢定义之后直接reserve一定的空间。在我的印象中reserve只是保留一定的空间而已好像没有多大的用处,然后就查了一下,发现reserve好像会直接去分配内存空间(虽然不会改变size)。于是写了一个小程序验证一下,结果发现,当数据量比较大的时候用reserve可以加快push的速度,于是又Get一个知识点。测试代码和结果#include<fs...转载 2020-07-06 14:08:38 · 208 阅读 · 0 评论 -
批处理文件名去掉()
CTRT+A全选后,(1)(2)。。。。。。。。文件名中含有括号,新建txt后修改为为.bat即可,内容如下。@Echo Off&SetLocal ENABLEDELAYEDEXPANSIONFOR %%a in (*) do (echo 正在处理 %%aset "name=%%a"set "name=!name:(=!"set "name=!name:)=!"ren "%%a" "!name!")exit...原创 2020-07-09 13:19:02 · 412 阅读 · 0 评论 -
读取文件夹下所有名字
bool getFiles(const std::string path, std::vector<std::string>& files, std::string postfix) { intptr_t hFile = 0; struct _finddatai64_t fileinfo; std::string p; if ((hFile = _findfirsti64(p.assign(path).append("/*.").append(po...原创 2020-07-09 18:19:08 · 247 阅读 · 0 评论 -
string与char相互转换
转载为了更好得学习,感谢原创https://www.cnblogs.com/Pillar/p/4206452.htmlC++中string、char *、char[]的转换 头段时间有人问过我这个问题,可是我一点头绪都没有,直接说不会。现在从网上找了点资料,看了看,知道点东西了。 一、string转char*。 主要有三种方法可以将str转换为char*类型,分别是:data(); c_str(); copy(); 1.data()方法,如:1 string str .转载 2020-07-13 15:47:44 · 46789 阅读 · 3 评论 -
std::ostringstream的用法
转载为了更好得学习,感谢原创大佬,感谢原创大佬!感谢原创大佬!原创 https://www.cnblogs.com/snowbook/p/5964434.html使用stringstream对象简化类型转换C++标准库中的<sstream>提供了比ANSI C的<stdio.h>更高级的一些功能,即单纯性、类型安全和可扩展性。在本文中,我将展示怎样使用这些库来实现安全和自动的类型转换。为什么要学习如果你已习惯了<stdio.h>风格的转换,也...转载 2020-07-14 13:21:15 · 2327 阅读 · 0 评论 -
C++ vector 遍历修改汇总
通过迭代器、下标操作符、范围for三种方式遍历vector内部元素以及不同遍历方式修改元素。#include<iostream>#include<vector>using namespace std;int main(){ vector<int> ivec; for(int i = 0; i < 10; ++i) ivec.push_back(i); //遍历vector元素 //1: 利用迭代器...原创 2021-02-22 16:11:43 · 3673 阅读 · 0 评论 -
保存csdn网页为pdf,防止网页乱码
打开需要保存的网页选择浏览器 开发者工具选项 打开 console,复制以下代码即可。(function(){$("#side").remove();$("#comment_title, #comment_list, #comment_bar, #comment_form, .announce, #ad_cen, #ad_bot").remove();$(".nav_top_2011, #header, #navigator").remove();$(".p4course_targ...原创 2021-07-07 11:05:21 · 643 阅读 · 0 评论