![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
c++
记录c++知识点,以及一些常用的函数表示方法
Junei1101
这个作者很懒,什么都没留下…
展开
-
copy()函数 equal()函数 back_inserter()函数 replace()和replace_copy()
STL 算法copy用法 using namespace std; int arr[7] = { 1,2,3,4,5,6,7 }; vector<int> vec; vec.resize(7); //一定要先分配空间,否则会报错 copy(arr, arr + 7, vec.begin()); 或者 copy(begin(arr), end(arr), vec.begin()); //将数组中的元素拷贝到vec中 //第一个参数和第二个参数是范围,第三个参数是目的容器的起始原创 2020-09-25 19:04:04 · 159 阅读 · 0 评论 -
QTreeWidgetItem自定义排序记录备忘
QTreewidgetItem ,自定义排序原创 2024-01-15 15:09:32 · 472 阅读 · 1 评论 -
如何设置QString字符串不同颜色
QString,字符串,颜色原创 2024-01-15 14:48:35 · 738 阅读 · 0 评论 -
单例模板学习记录
单例类学习引用记录原创 2024-01-12 15:12:32 · 343 阅读 · 0 评论 -
c++进行文件复制
一、首先头文件的包括#include "Shellapi.h"#include "tchar.h"#pragma comment(lib,"shell32.lib") 二、字符的转换std::string 类型转换成 LPCWSTR 类型LPCWSTR stringToLPCWSTR(std::string orig){ size_t origsize = orig.length() + 1; const size_t newsize = 100; size_t converte原创 2021-03-01 14:27:03 · 4517 阅读 · 0 评论 -
xml 读取字符串出现乱码转换
xml 读取 TiXmlElement * elem = nodeElem->FirstChildElement(); std::string ss = elem->Value();//标签值 for (elem; elem != NULL; elem = elem->NextSiblingElement()) {//遍历 TiXmlAttribute *pAttr = elem->FirstAttribute();//第一个属性 std::string原创 2021-01-18 20:13:49 · 576 阅读 · 0 评论 -
Json的解析和生成
json:{ "shemename":"方案", "eventname":"事件", "name":"lucy" "lucy": { "age":17, "gender":"female" } "course": [ "math", "chinese", "English" ]}//读取bool readJson(){ bool res; JSONCPP_STRING errs; Json::Value root; Json::Ch原创 2020-12-01 14:55:14 · 261 阅读 · 0 评论 -
互斥锁
mutex m;//定义锁对象m.lock();//上锁sharedVariable= getVar();m.unlock();//释放锁{ std::mutex m,//定义对象 std::lock_guard<std::mutex> lockGuard(m);//上锁 生命周期结束自动解锁 sharedVariable= getVar();}原创 2020-11-27 13:55:27 · 86 阅读 · 0 评论 -
SHELLEXECUTEINFO学习
SHELLEXECUTEINFO结构:主要用在mfc中 头文件#include “afxdialogex.h”typedef struct _SHELLEXECUTEINFO { DWORD cbSize; ULONG fMask;//标志数组 设置成员的有效性 HWND hwnd;//可选 可选。执行ShellExecuteEx的窗口句柄,可设为NULL LPCTSTR lpVerb;//指定执行的动作 LPCTSTR l原创 2020-11-27 10:58:21 · 3378 阅读 · 0 评论 -
MFC通信
CSocket类是由CAsyncSocket继承而来的,在MFC中CAsyncSocket 逐个封装了WinSock API,每个CAsyncSocket对象代表一个Windows Socket对象,CSocket类是CAsyncSocket的派生类, 继承了它封装的WinSock API。(1)构建CAsyncSocket对象`直接构建对象:CAsyncSocket sock; //使用默认参数产生一个字节流套接字Sock.Create();//生成一个socket句柄 字节流套接字指定端口:原创 2020-11-03 12:04:29 · 324 阅读 · 0 评论 -
strtok进行字符串分割
char str[80] = "This is - www.runoob.com - website"; /* 获取第一个子字符串 */ char * tmp = strtok(str, '-'); /* 继续获取其他的子字符串 */ while( tmp ) { std::cout<<tmp<<std::edl; tmp = strtok(NULL, '-'); }可以理解成固定写法也可以理解:...原创 2020-10-29 14:25:56 · 162 阅读 · 0 评论 -
myString类
class myString{public: myString() :m_start(nullptr),m_end(nullptr) {} myString(std::initializer_list<char> li) { size_t st=li.size(); m_start = a.allocate(st);//空间的首地址 m_end = uninitialized_copy(li.begin(),li.end(), m_start); } myString(原创 2020-10-09 17:33:15 · 264 阅读 · 0 评论 -
strVec类
class strVec{public: strVec() :elem(nullptr),first_free(nullptr),cap(nullptr) {}//默认初始化 strVec(const strVec & str)//拷贝构造 { elem = alloc.allocate(str.end() - str.begin());//开辟出一个空间 p 指向首地址 first_free=cap=uninitialized_copy(str.begin(), str.e原创 2020-10-09 14:38:26 · 193 阅读 · 0 评论 -
左 / 右值 引用 简单记录
首先,区分左值和右值的取别左值:可以取地址 ,有名字,非临时的变量 eg:变量,函数返回值的引用,const对象右值:不能取地址,没名字,临时的变量 eg:立即数,函数返回值传统的左值引用:int a=10;int & b=a;//之后可以通过b 修改a的值但是int & c=10;//这个是错误的,因为立即数存放在寄存器上,而不在内存中const int & c =10;//是可以成功的等价于:const int tp=10;//在内存中开辟了临时空间原创 2020-10-09 13:49:15 · 97 阅读 · 0 评论 -
unique_ptr简单使用
一、初始化std::unique_ptr<int> p1(new int(12));std::unique_ptr<string> p1(new string(""));二、指针转移std::unique_ptr<int> p1(new int(12));std::cout << &(*p1) << std::endl;//std::cout << p1 << std::endl;无法这样直接打印st原创 2020-10-06 16:33:54 · 376 阅读 · 0 评论 -
shared_ptr 传值和传引用
一、shared_ptr 对象作为值参数void fun(std::shared_ptr<int> ptr){ std::cout << ptr << endl;}int main(){ std::shared_ptr<int> ptr = make_shared<int>(55); std::cout << ptr << std::endl; fun(ptr); std::cout <<原创 2020-10-06 10:11:24 · 4681 阅读 · 1 评论 -
shared_ptr简单使用
一、shared_ptr 初始化 shared_ptr<int> p1=make_shared<int>();//初始化为0 *p1=20;//像平常指针一样使用 shared_ptr<int> p2=make_shared<int>(43); shared_ptr<string> p3=make_shared<string>("hello"); shared_ptr<string> p4=make_shared原创 2020-09-30 17:53:11 · 566 阅读 · 0 评论 -
initializer_list使用
一 、函数的使用 void Fprint(initializer_list<int> list) { auto it = list.begin(); for (it; it != list.end(); ++it) { std::cout << *it << std::endl; } }引用:Fprint({1,2,3,4,5,6});结果二、普通类的使用class Ctest{public: Ctest() {} Cte原创 2020-09-30 10:02:46 · 276 阅读 · 0 评论 -
map和multimap基本知识
一、pair操作创建和初始化(四种) pair<string,int> p1; p1.make_pair("lili",40); pair<string,int> p2("lili",40); pair<string,int> p2(p1); pair<string,int> p3; p3.first="lili"; p3.second=40; 一 、 map常用操作(1)初始化 map<string,int>原创 2020-09-29 10:24:21 · 160 阅读 · 0 评论 -
accumulate 求和
#include<numeric> #include<string>int 求和 vector<int> vec; int sum=accumulate(vec.begin(),vec.end(),0); 前两个参数是范围,也可以用cbegin() / cend() 第三个参数表示和的初始值以及类型计算从标准输入中读取的数据的和 istream_iterator<int> in(cin),eof; int sum=accumulate(.原创 2020-09-27 15:11:33 · 242 阅读 · 0 评论 -
istream_iterator简单用法
istream迭代器利用输入流迭代器istream_iterator进行文件操作: std::ifstream i_file("data.txt"); //打开文件 istream_iterator<string> getStr(i_file); //从i_file读取字符串 istream_iterator<string> eof;//尾后迭代器 while (getStr != eof)//判断是否到达尾部 { std::cout << *getS原创 2020-09-27 14:58:15 · 1507 阅读 · 0 评论 -
容器去重
容器的去除重复: 第一步:排序 第二步:将重复放到尾部 第三步:删除重复的部分代码实例如下:void mysort(vector<int> & v){ sort(v.begin(),v.end());//排序将相同的元素放在一起 auto end_unique=unique(v.begin(),v.end()); //将重复的放到最后,不重复元素的尾部 v.erease(end_unique,v.end());//将重复的部分删除}...原创 2020-09-25 19:40:06 · 341 阅读 · 0 评论 -
find 查找特定值
一、vector中查找特定值如果搜索成功,则返回对应的迭代器如果搜索失败,则返回第二个参数的迭代器 using namespace std; vector<int> v = { 1,2,3,4,5,6,7 }; int val = 4; auto result = find(v.begin(), v.end(), val); //返回的是指向4 的迭代器 cout << *result << endl;二、list中查找给定的string串反向迭代器原创 2020-09-25 12:30:56 · 426 阅读 · 0 评论 -
c++ 基础知识(一):cin 死循环的解决方法 STL中的count和count_if 函数 求和函数accumulate
**io:std::cin 标准输入 std::cin >> a; 注意死循环的解决方法std::cout 标准输出 std::cout << a << std::endl;std::cerr 输出警告和错误消息std::clog 输出信息std::endl 冲刷缓存区 是数据真正写入到输出流中作用域运算符:指定命名空间命名空间:避免命名冲突`**cin 死循环的解决方法: int a = 0; while (!(std:原创 2020-09-25 11:30:05 · 743 阅读 · 0 评论 -
c++ 分割 字符串 技巧
笔记:c++字符串分割方法(一)std::string st = "ab/cd/ef,gh,sd,",tt;//中间的/,为分割字符std::string::size_type pos = 0; //位置记录int mark = 0;while ((pos = st.find_first_of(",/", pos))!=std::string::npos){ std::cout<<st.substr(mark, pos-mark)<<std::endl;//打印分割结果原创 2020-09-25 09:14:17 · 138 阅读 · 0 评论