STL
文章平均质量分 51
sichuanwww
VegaPrime/Android/LabWindows/Python/ThreeJS
展开
-
STL空间配置器入门
因为真正可以在程序运行中就归还系统的只有自由链表中的未使用值,但是他们并不一定是连续的(用户申请空间,释放空间顺序的不可控制性),所以想要在合适时间(eg一级配置器的handler中释放,或者设置各阀值,分配空间量到达时处理),就必须保证释放的空间要是连续的。释放时,仅释放连续的大块。各自管理大小分别为8,16,24,32,40,48,56,64,72,80,88,96,104, 112,120,128 字节的小额区块。所以,就使用Trace进行跟踪,打印数据流向,逻辑走向,文件,函数,方法,行位置。原创 2023-08-05 09:48:27 · 206 阅读 · 0 评论 -
集合运算样例
集合运算中的差集、交集、并集运算,set_difference,set_intersection、set_union。让人疑惑的是并不用集合,而是用向量计算。原创 2022-08-06 08:07:57 · 93 阅读 · 0 评论 -
数据集中的交集差集并集操作
这里的最大缺点是必须为目的集合留下足够的空间,最后再删除掉,比python来还是弱了很多,谁叫C++是底层语言呢?尽量使用STL自带函数进行操作,可读性更强,缺点是容易忘记。原创 2024-04-23 09:34:34 · 204 阅读 · 0 评论 -
VC创建XML文件
XML文件清晰,通用性强。以下代码在VS2008下调试通过。//包括msxml头文件#include <msxml6.h>//引入msxml动态链接库#pragma comment(lib,"comsuppwd.lib")//创建XML文件void PublicParseXML::CreateXML(CString strFileName){ CoIni...原创 2019-11-18 10:03:41 · 321 阅读 · 1 评论 -
C++中的临时变量
它们是被神所遗弃的孩子,没有人见过它们,更没有人知道它们的名字.它们命中注定徘徊于命运边缘高耸的悬崖和幽深的深渊之间, 用自己短暂的生命抚平了生与死之间的缝隙.譬如朝露,却与阳光无缘.是该为它们立一座丰碑的时候了,墓铭志上写着:我来了,我走了,我快乐过. 许多人对临时变量的理解仅仅限于: string temp; 其实,从C++的观点来看,这根本就不是临时变量,而是局部...转载 2017-06-07 11:12:33 · 364 阅读 · 0 评论 -
C++中引用的常见用法
C++中引用的常见用法 在C++中引用类型是一个强大的存在,它一定程度上规避了指针带来的风险,并且使得函数参数之间的传值和通信变得异常灵活。 1.引用的概念 在C++中,可以定义引用如下:1 int n;2 int &r = n; 这样定义以后,r就是int型变量n的一个引用。可以理解为给变量n取了一个“别名”叫r,从此r跟n便绑定在一起了。修改r的值,实际上也就等于修改了n的值...转载 2018-07-02 09:52:10 · 385 阅读 · 0 评论 -
Cpp四种类型转换
static_cast: 在功能上基本上与C风格的类型转换一样强大,含义也一样。它也有功能上限制。例如,你不能用static_cast象用C风格的类型转换一样把struct转换成int类型或者把double类型转换成指针类型,另外,static_cast不能从表达式中去除const属性,因为另一个新的类型转换操作符const_cast有这样的功能。const_cast: 用于类型转换掉表达式的co...原创 2018-07-02 11:29:20 · 387 阅读 · 0 评论 -
STL常用代码
// display3.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include <algorithm>#include<ostream>#include<iostream>#include <vector>#include<functional>using namespac...原创 2018-07-04 11:23:37 · 311 阅读 · 0 评论 -
partition和partial_sort
//分隔和分隔排序#include "stdafx.h"#include<iostream>#include<algorithm>#include<vector>#include<functional>#include<ctime>using namespace std; int main(){ srand(sta...原创 2018-07-07 09:44:08 · 417 阅读 · 0 评论 -
vector中的清零与压缩(swap)操作的统一格式
// 初始化操作1 vector<int> v; for(int i=;i<10;++i) v.push_back(i); 2 清零操作 v.clear(); v.resize(0);//这两个操作只能完成清零操作,但并不会释放已分配的元素空间。//即: v.size()值为0 v.capacity()值保持...原创 2018-07-31 10:25:12 · 1689 阅读 · 0 评论 -
原子操作InterlockedExchange系列
//本内容只在多线程操作下具有意义1 循环锁实现循环锁: 可以用InterlockedExChange来实现循环锁的功能,所谓循环锁,就是在线程1中如果要对变量进行操作,要先查看这个变量(或资源)有没有被其它线程用到,如果是,则一直循环,则到其它线程放弃对该变量(或资源)的控制。如果否,直接可以对该变量(或资源)进行操作。 如: (使用srwlock也是可以实现的,可读性更强。不用...原创 2018-08-19 08:33:49 · 18450 阅读 · 0 评论 -
AfxExtractSubString字符串提取函数
CString str = _T("192.168.89.125");CString output = "";for (int i=0; i<4; i++){ AfxExtractSubString(output, str, i, '.'); printf("%s/n",output);}原创 2018-05-15 15:48:42 · 837 阅读 · 0 评论 -
STL区间成员函数及区间算法总结
区间成员函数通用区间算法STL区间成员函数及区间算法总结在这里总结下可替代循环的区间成员函数和区间算法;相比单元素遍历操作,使用区间成员函数的优势在于: 1)更少的函数调用 2)更少的元素移动 3)更少的内存分配在区间成员函数不适用的情况下也应该使用区间算法,至少,相比手写循环而言,它更加简单,有效,并且不容易出错;区间成员函数区间构造标准容器都支持区间构造函数:container::contai...转载 2018-05-07 16:10:48 · 364 阅读 · 0 评论 -
transform 函数对象
// sort.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include<iostream>#include<algorithm>#include<vector>#include<list>#include<functional>#include<ctime>原创 2018-05-10 20:55:09 · 353 阅读 · 0 评论 -
Effective STL读书笔记
(一)慎重选择容器 1 vector连续的空间存储,可以使用[]操作符。可以快速的随机访问元素,快速地在末尾插入元素,但是在序列中间随机地插入、删除元素比较慢。 2 list每个元素间用链表相连。不能用[]随机访问元素。随机插入元素比vector快,对每个元素分配空间,不存在重新分配的情况。有很多有用的成员函数,比如:sort,reverse,unique,spl...原创 2018-05-10 20:19:36 · 472 阅读 · 1 评论 -
STL中的区间删除算法
STL中的区间删除算法#include "stdafx.h"#include<iostream>#include<algorithm>#include<vector>#include<functional>#include<ctime>using namespace std; int main(){ srand...原创 2018-05-10 19:32:36 · 368 阅读 · 0 评论 -
VC中的lambda
lamda表达式是c++11规范引入的新语法。这是一个已经出现在众多语言中的一个语法形式。引用百科中对于lamda表达式的解释:“Lambda 表达式”(lambda expression)是一个匿名函数,Lambda表达式基于数学中的λ演算得名,直接对应于其中的lambda抽象(lambda abstraction),是一个匿名函数,即没有函数名的函数。基本语法基转载 2017-09-20 16:40:28 · 424 阅读 · 0 评论 -
获取环境变量
//一些常用代码 //获取命令行参数------------------------------------------------- LPWSTR *szArgList; int argCount; szArgList = CommandLineToArgvW(GetCommandLine(), &argCount); fo原创 2017-08-07 12:17:23 · 439 阅读 · 0 评论 -
例举所有进程
#include "stdafx.h"#include #include "tlhelp32.h"#include #include #include using namespace std; BOOL TerminateProcessFromId(DWORD dwId){ BOOL bRet = FALSE; // 打开目标进程,取得进程句柄 HANDLE原创 2017-08-07 10:16:39 · 266 阅读 · 0 评论 -
一个好用的串口类(收发自如)
个串口通讯的类/**/#ifndef _CommUtils_H__#define _CommUtils_H__class CommUtils ;#endif/**/#include "stdafx.h"#include "CommUtils.h"#include "stdio.h"const int READ_TIMEOUT = 500;CommUtils::C原创 2017-08-08 11:10:44 · 1763 阅读 · 0 评论 -
C++class默认生成4个函数
序:对于一个空类,编译器默认生成四个成员函数:默认构造函数、析构函数、拷贝构造函数、赋值函数一,默认构造函数 默认构造函数(default constructor)就是在没有显式提供初始化式时调用的构造函数。它由不带参数的构造函数,或者为所有的形参提供默认实参的构造函数定义。如果定义某个类的变量时没有提供初始化式就会使用默认构造函数。 如果用户定义的类中没有显式的定义任何转载 2017-06-07 11:32:27 · 410 阅读 · 0 评论 -
STL使用几个雷区
1 swap操作后括号内的对象被清空 v1.swap(v2); v2的值拷贝到v1以后,v2会被清空。 2 swap是最高效便捷的压缩方式 v.swap( vector<int>(v) ); //清零 v.swap( vector<int>() ); 3 vector的成员函数assign的正确使用方法 ...原创 2018-09-01 10:07:34 · 278 阅读 · 0 评论 -
认识STL中的区间成员函数
// 三个无法抗拒的理由/* 区间成员函数:写起来更容易,通常可以少写一些代码; (不用for循环、copy算法、banck_inserter) 区间成员函数:通常更能清楚地表达意图; (更加直接的代码,见其名知其意) 区间成员函数:表现出更高的效率*///--------...原创 2018-09-02 10:43:03 · 370 阅读 · 0 评论 -
C++异常except
#include "stdafx.h"#include <stdexcept>using namespace std;int SafeDivide(int num,int den){ if(den==0) throw invalid_argument("除数为零了"); return num/den;}int _tmain(int argc, _TCHAR* ...原创 2018-10-08 10:15:00 · 1221 阅读 · 1 评论 -
窗口绘图函数
struct CoordXY{ double x; double y;};//存储压强和位移二维值vector<CoordXY> WxpReadIOAnalog::vAnalog21PS(0); void DialogC::OnPaint(){ //CPaintDC dc(this); // device cont...原创 2019-09-24 21:38:59 · 194 阅读 · 0 评论 -
CString,string,char*之间的转换
这三种各有优点。比如CString比较灵活,是基于MFC常用的类型,安全性也最高,但可移植性最差。string是使用STL时必不可少的类型,所以是做工程时必须熟练掌握的;char*是从学习C语言开始就已经和我们形影不离的了,有许多API都是以char*作为参数输入的。所以熟练掌握三者之间的转换十分必要。以下我用简单的图示指出三者之间的关系,并以标号对应转换的方法。1 s...原创 2019-09-20 09:21:49 · 183 阅读 · 0 评论 -
自定义类型的vector相等判断
vector对系统类型变量,比如int,double等,是具有相等判断的,也就是重载了相等运算符==。但对于自定义类型,比如结构体,是不能进行相等判断的,根本原因就是没有重载相等运算符==。只要在自定义的结构体内,重载定义了相等运算符==,自定义类型的vector也是可以直接使用相等符号==判断是否相等的。#include "stdafx.h"#include<vecto...原创 2019-09-16 11:31:11 · 2086 阅读 · 1 评论 -
set结构体类型的相等判断
包含小于符号<和等于符号==运算符重载的结构体,用于存储母排一个基本的打孔信息//母排上的打孔基本单元struct WxpMupaiHoleUnit{ //位置信息,相对于母排中心 string Pos; //半径 string Radius; // <小于比较运算符重载 bool operator <(const WxpMupaiHoleUnit &...原创 2019-09-14 18:21:26 · 861 阅读 · 0 评论 -
C++ set插入结构体struct数据类型
set具有天然的排序与去重功能,结构体不是基本类型(基本类型有默认的排序准则),因此需要重载 < 运算符。(相当于给自定义类型一个排序准则)。bool operator <(const HolePos & a)const ;运算符重载必须是const。#include "stdafx.h"#include <set>#include <iostre...原创 2019-07-11 09:53:16 · 6999 阅读 · 14 评论 -
STL常用容器的优点和缺点
常用的STL容器有vector、list、deque、map、multimap、set和multiset,它们究竟有何区别,各自的优缺点是什么,为了更好的扬长避短,提高程序性能,在使用之前需要我们了解清楚。verctorvector类似于C语言中的数组,它维护一段连续的内存空间,具有固定的起始地址,因而能非常方便地进行随机存取,即 [] 操作符,但因为它的内存区域是连续的,所以在它中间插入...原创 2019-06-12 10:50:01 · 344 阅读 · 1 评论 -
STL中的stringstream应用
实现字符串流的处理,便于数字和字符串之间的自由转换一 必须添加的头文件#include <sstream>>using namespace std;二 注意的问题 stringstream st对象会累积字符,不会自动清理。voidclear( iostate state = goodbit);//该方法绝非清空stringstream中的内容...原创 2019-05-15 14:50:30 · 408 阅读 · 5 评论 -
套接字文件传输例子
整个例子在VS2008下调试通过,测试了不同发送缓冲区大小实现不同传输速度,自己可以调试确定发送缓冲区的大小。如果需要,发送部分可以修改成多线程模式,可以接收多个客户端的请求。//发送部分#include "stdafx.h"#include<iostream>#include<winsock2.h>#include <stdio.h>...原创 2019-05-10 16:08:24 · 926 阅读 · 0 评论 -
set中的排序
关于set,必须说明的是set是关联式容器。set作为一个容器也是用来存储同一数据类型的数据类型,并且能从一个数据集合中取出数据,在set中每个元素的值都唯一,而且系统能根据元素的值自动进行排序。应该注意的是set中数元素的值不能直接被改变。C++ STL中标准关联容器set, multiset, map, multimap内部采用的就是一种非常高效的平衡检索二叉树:红黑树,也成为...原创 2019-03-26 13:58:07 · 419 阅读 · 1 评论 -
multiMap的基本操作
//---------------#include "stdafx.h"#include<iostream>#include<map>using namespace std; void InitMultimap(multimap<int,int> &myMultimap){ //插入值 for(int i=1;i&...原创 2019-03-19 08:29:44 · 581 阅读 · 0 评论 -
timeSetEvent定时器回调函数使用
// vector.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include <iostream>#include <windows.h> #include <mmsystem.h>#pragma comment(lib,"Winmm.lib")using namespace std;#def...原创 2018-12-05 11:32:33 · 1490 阅读 · 0 评论 -
SetWaitableTimer线程使用方式设计
//h文件#pragma onceclass PublicTimer{public: PublicTimer(void); ~PublicTimer(void); //定时器线程 static UINT BeginTimer(LPVOID); //定时器回调函数 static VOID APIENTRY TimerAPCRoutine( PVOID pvArgTo...原创 2018-12-05 10:20:16 · 964 阅读 · 0 评论 -
STL中的SET认知
1.关于setC++ STL 之所以得到广泛的赞誉,也被很多人使用,不只是提供了像vector, string, list等方便的容器,更重要的是STL封装了许多复杂的数据结构算法和大量常用数据结构操作。vector封装数组,list封装了链表,map和set封装了二叉树等,在封装这些数据结构的时候,STL按照程序员的使用习惯,以成员函数方式提供的常用操作,如:插入、排序、删除、查找等。让用户...转载 2018-11-28 08:39:10 · 205 阅读 · 0 评论 -
无窗口定时器SetWaitableTimer
#include "stdafx.h"#include<iostream>#include<windows.h>#include<ctime>using namespace std;VOID APIENTRY TimerAPCRoutine( PVOID pvArgToCompletionRoutine,DWORD dwTimerLowValue...原创 2018-12-04 22:08:16 · 586 阅读 · 0 评论 -
Set的insert操作
set的单元素插入返回一个二元组(Pair)。成员 pair::first 被设置为指向新插入元素的迭代器或指向等值的已经存在的元素的迭代器。成员 pair::second 是一个 bool 值,如果新的元素被插入,返回 true,如果等值元素已经存在(即无新元素插入),则返回 false。 因为在 set 中元素的主键是唯一的,当前插入操作将会检测被插入元素是否等于容器中某个已存在元素...原创 2018-12-04 08:36:05 · 8421 阅读 · 0 评论 -
CListCtrl导出数据到Excel
//关于标题的获取,其他方法有可能只能获取可见的标题栏//该方法可以获取所有标题栏//获得列表EXCEL void PublicMember::WxpVR_GetExcel(CListCtrl * wxpDataList){ WxpVR_vitemTitle.swap(vector<CString>()); AfxMessageBox("开始...原创 2018-11-19 21:27:16 · 258 阅读 · 0 评论