
c/c++基础
c、c++语言基础、win32编程、c++ Effective STL
群野
cording
展开
-
c++动态数组vector
遍历#include <vector>vector<int> myint{1,2,3,4,5};//动态数组 for(auto i : myint){ cout<<i<<endl; }// for (auto ib = myint.begin(), ie = myint.end(); ib!=ie; ib++) {// cout<<*ib<<endl;// }//原创 2022-02-14 21:39:05 · 492 阅读 · 0 评论 -
c++ 数组array和多元数组tuple
array数组初始化int *p =(int[]){1,3,3,4,5});//C风格int a[5]{1,2,3,4,5};//栈上int *p(new int[5]{1,3,3,4,5});//堆上#include <iostream>#include <array>int main(int argc, const char * argv[]) { int *p = new int[5]{5, 4, 3, 2, 1}; for (int原创 2022-02-24 17:50:26 · 870 阅读 · 0 评论 -
c++ list数据结构及双链表
list数据结构及双链表list的应用要了解c++的list实现细节可以参考C++链表的C实现(查找中间节点、判断是否存在环)#include <list>#include <list>#include <iostream>using namespace std;int main(){ list<int> mylist{1,2,3,4,5}; mylist.push_back(10); for(auto i : myl原创 2022-02-24 17:43:39 · 692 阅读 · 0 评论 -
二叉树,遍历
先根,中根,后根遍历原创 2022-07-14 20:43:09 · 330 阅读 · 0 评论 -
c++泛型编程——STL 仿函数,仿函数适配器
仿函数概述仿函数和算法的关系仿函数使用办法自定义仿函数仿函数作为参数原因set元素类型需要一致才可比较改变set默认排序行为仿函数适配器not_equal_to()不能匹配vector的非0元素仿函数适配器binder1st 套接not_equal_to()### binder1st的简化binder2nd()mem_fun()调用方式调用过程mem_fun_ref()...原创 2022-05-07 21:46:55 · 276 阅读 · 0 评论 -
c++模板:容器list、vector
c++模板容器类型模板实例化方法(函数)模板泛型编程概述关联特性Traits迭代器iterator容器动态数组vector队列deque链表list模板是c++的特性,通过泛型实现。主要有两种表现形式:类型模板、和方法模板。类型模板实例化显示实例化,初始化告诉类型。隐示实例化,根据参数判别。方法(函数)模板参数化的一族函数(A family of function)模板会被编译两次,第一次检查语法,第二次实例化期间检查调用是否合法。模板实例化,如果需要不一样的类型,显示指定T的型别为长原创 2022-05-04 12:53:48 · 1188 阅读 · 0 评论 -
求字符串最长子串
Given a string s, find the length of the longest substring without repeating characters.Example 1:Input: s = "abcabcbb"Output: 3Explanation: The answer is "abc", with the length of 3.Example 2:Input: s = "bbbbb"Output: 1Explanation: The answer i原创 2022-04-21 16:01:05 · 371 阅读 · 0 评论 -
c++的const和c的const的区别
c语言const常量,只能避免直接修改操作,无法避免指针地址间接操作。#include <stdio.h>void main(){ const int num = 100; //int a[num];//X *(int *)&num = 4; printf("%d",num);//4;}c++编译器会将放入数组的const变量直接替换成常量,类似#define。而如果const变量用已经赋值的变量赋值,则编译器会认为赋值的为变量,而不进行优化。#include &原创 2022-04-20 11:12:58 · 969 阅读 · 1 评论 -
c++函数扩展操作
lambda表达式[=&]()mutable->{}()ISO C++ 11 标准的一大亮点是引入Lambda表达式。基本语法如下:[capture list] (parameter list) -> return type { function body }主要用于解决函数内部函数定义的问题。例如调用中的std::sort,ISO C++ 98 的写法是要先写一个compare函数:bool compare(int& a,int& b){ retur原创 2022-02-22 17:04:21 · 2975 阅读 · 0 评论 -
c++多线程条件变量
condition_variable处理线程间消息通讯#include <condition_variable>using namespace std;mutex m;condition_variable cv;int main(){ thread **ps = new thread *[10];//开辟线程指针数组 for(int i= 0;i<10;i++){ ps[i] = new thread([](int index){原创 2022-02-16 11:42:41 · 535 阅读 · 0 评论 -
c++线程通讯
线程通讯通过全局promise变量和线程局部变量future进行通讯。promise<string> val;//全局通讯变量int main(){ thread th1([](){ future<string> fus = val.get_future();//获取未来状态 cout<<"等待中…"<<endl; cout<<fus.get()<<endl;原创 2022-02-16 07:26:49 · 873 阅读 · 0 评论 -
c++高级多线程:死锁与解锁
mutex 不要嵌套使用,即mutex.lock();mutex.unlock();为什么要成对使用。否则多线程情况下,可能造成死锁。mutex g_mutex1, g_mutex2;void add1(int *p1, int *p2){//多线程里引用类型函数,模板,避免类型转换尽量用指针,少使用引用 for (int i = 0; i<COUNT; i++) { /*可能死锁的情况*/// g_mutex1.lock();// p1+原创 2022-02-15 19:37:55 · 590 阅读 · 0 评论 -
c++并行汇总计算
如果有5000000个数据需要(累加)计算,可以尝试分组并行计算,再进行汇总。这里有个疑问,好像并行汇总在简单计算里并不节省时间,哪位大神可否回答我的疑问?#include <unistd.h>//macOS#include <mutex>#include <chrono>#include <list>#include <iostream>#include <vector>#include <future>#原创 2022-02-14 18:42:28 · 1033 阅读 · 1 评论 -
c++ 指针与内存管理
文章目录new/delete与malloc/free区别new分配内存,栈堆静态区new/delete局部重载全局与局部new/delete分析双链表list数据结构双链表管理一个类对象new/delete与malloc/free区别new分配内存,栈堆静态区new/delete局部重载全局与局部new/delete分析双链表list数据结构双链表管理一个类对象...原创 2022-02-13 23:41:19 · 1640 阅读 · 0 评论 -
c++原子变量,互斥锁与线程安全
多线程访问数据不冲突,线程安全;冲突则不安全。保证数据安全给数据加互斥锁。#include <mutex>int num =0;mutex m;//互斥锁//多线程访问数据不冲突,线程安全;冲突则不安全。保证数据安全给数据加互斥锁void run(){ for (int i=0; i<10000000; i++) { m.lock(); num++; m.unlock(); }}int main(){原创 2022-01-21 19:06:43 · 2878 阅读 · 0 评论 -
c++指针与多线程
文章目录cpp多线程初级概念多线程传递参数多线程join&deatchcpp多线程初级概念一个运行的程序即一个进程,一个线程可以理解为进程中执行的一段程序片段,即时间片。同一进程产生的线程共享同一内存空间。#include <thread>//#include <windows.h>//windows#include <unistd.h>//macOSusing namespace std;void run(){ cout<<"原创 2022-01-21 17:15:13 · 766 阅读 · 0 评论 -
c++引用&和指针*
文章目录引用&引用一个数组引用堆上的指针数组指针*引用&c++里能用引用的就不用指针;引用实际上就是一个别名,一旦初始化就不会在引用其他变量。除了作为变量,定义后必须初始化。引用的本质引用实质上是变量名的别名,是用指针实现的。double a = 3.14;double &b = a;cout<<sizeof(b)<<endl;//4左值引用int &data/右值引用int &&data int a[原创 2022-01-17 23:05:50 · 809 阅读 · 0 评论 -
Win32 API复习
目录创建一个窗体得过程:1.先定义后注册。2.创建3.消息处理控制台输出的应用消息处理一、WM_PAINT的工作原理:1.WM_PAINT://当窗体大小/位置改变的时候,该消息被系统使用PostMessage发送2.利用WM_PAINT绘制图形与文本文本绘制1.背景颜色2.创建字体3.文本颜色4.坐标系以及坐标的单位度量5.文本的对齐方式6.位置(在 TextOut函数参数指定)图型绘制1.点的绘制SetPixel2.线的绘制(受Pen影响)3.区域的填充绘制(受Brush影响)4.用户自定义坐标轴原创 2021-12-25 13:00:23 · 255 阅读 · 0 评论 -
c++基础关键字
c/c++区别#include //cout,cin对应scanf,printf#include //对应c语言stdlib.h#include /对应c语言string.hcin.get();C弱类型,c++强类型,赋值时有类型检测。c++风格初始化区分于赋值。int a(5);//cpp风格初始化int b[5]{1, 2, 3, 4, 5};//cpp风格初始化c++没有申明和定义只有定义,定义需要初始化;namespace一般禁止使用匿名命名空间namespace,::命名空间引原创 2021-12-24 17:43:44 · 217 阅读 · 0 评论 -
C++和OC的区别
C++语言特点: 1.在C语言的基础上进行扩充和完善,使C++兼容了C语言的面向过程特点,又成为了一种面向对象的程序设计语言; 2.可以使用抽象数据类型进行基于对象的编程; 3.可以使用多继承、多态进行面向对象的编程; 4.可以担负起以模版为特征的泛型化编程。OC语言特点:原创 2012-12-19 22:44:59 · 3840 阅读 · 0 评论 -
C语言基础
C语言 变量值传递,传递实参给形参,运算完毕不回传,为单向传递。c语言允许声明的时候没有形参,表示传参自由,但一般为了形象表明所传参数最好写上。行参也是局部变量,调用时分配空间。register int a;//表示把变量放在寄存器里volatile int a;//表示该变量随时可能因为外部原因中断或改变。局部变量在栈里分配空间, 全局变量在内存分配空间。静态变原创 2010-07-31 19:51:00 · 893 阅读 · 0 评论