自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(8)
  • 问答 (1)
  • 收藏
  • 关注

原创 std::copy()的一些坑

一、迭代器不安全有这个警告时加上#define _ITERATOR_DEBUG_LEVEL 0二、如果要复制给一个vector,用resize申请空间copy接受三个迭代器,第一个和第二个为要复制的区间[first,last)。第三个迭代器为目标的起始位置,要求目标已有足够的空间。即不能是空的vector(size==0)。使用reserve,vector的capicity增加了,size却还是0,所有不能用来申请空间(可能是这个原因吧)#define _ITERATOR_DEBUG_LEVEL

2020-07-20 21:00:06 701

原创 STL heap(堆)

STL中没有提供堆这种容器,但是提供了一组将其它容器重构成具有堆排列顺序的算法。一、make_heap。将一组现有的数据转换成heap结构。示例1:#include<iostream>#include<vector>#include<queue>//#include<xfunctional>//含less与greaterint main(){ std::vector<int> L = {1,23,4,56,78,34,54,27

2020-07-19 22:04:15 151

原创 std::priority_queue 用法

可以在优先级队列中自定义数据的优先级, 让优先级高的排在队列前面,优先出队。优先队列具有队列的所有特性,包括队列的基本操作,只是在这基础上添加了内部的一个排序,它本质是一个堆实现的。top 访问队头元素empty 队列是否为空size 返回队列内元素个数push 插入元素到队尾 (并排序)emplace 原地构造一个元素并插入队列pop 弹出队头元素swap 交换内容用法:priority_queue<Type, Container, Functional>Type为元

2020-07-18 00:25:38 4035

原创 std::vector中的insert、emplace、push_back、emplace_back

一、insert有多个重载函数,可完成多种类型的插入1、iterator insert(pos,element)在迭代器pos位置之前,插入元素element。并返回新插入元素位置的迭代器。2、iterator insert(pos,n,element)在迭代器pos之前,插入n个element,并返回第一个新插入元素的迭代器(离pos最远那个)3、iterator insert(pos , other_first , other_last)在迭代器 pos 指定的位置之前,插入其他容

2020-07-17 21:45:24 2561

原创 std::map的使用

map是一种字典存储<key,value>,map里存放的必须是pair模板类的对象,因为pair模板中的first就是key,second就是value。pair模板在STL种的定义很复杂,我只了解了如何创建pair对象和提供了哪些接口。1、创建pair对象std::pair<K, V> element;调用默认构造函数创建了pair类对象element,没有赋值。...

2020-07-16 21:56:18 3188

原创 vector: erase与insert

erase: vector有两个重载的eraseiterator erase( iterator _Where);iterator erase( iterator _First, iterator _Last);如果是删除指定位置的元素时:返回值是一个迭代器,指向删除元素下一个元素;如果是删除某范围内的元素时:返回值也表示一个迭代器,指向最后一个删除元素的下一个元素;insert: vector中有三个重载的insertiterator insert( iterator loc,

2020-07-03 11:55:55 1627

原创 vector初始化时的()[ ]区别,指针与迭代器的认识

1vector<int> s;vector<int>* p=&s;s是一个vector型的对象,它不是数组,但它重载了[ ],支持下标运算。p是指向这个对象的指针,p++,p[1]这种屁都不是,因为s就一个,s不是对象数组的名字。这下知道为什么要有迭代器了吧,因为指向s的指针不可以移动,想在s元素上移动就得使用s内部的“指针”。所以封装了迭代器,来在s 上“移动”。(*p)[1];//是正确的,因为*p就是s2vector<int> s(2);//是

2020-07-03 11:35:18 420

原创 vector: resize reserve

问题:使用vector时,直接push_back会造成很多复制(push_back时不一定就增加一个位置,要是加多了,后面的push_back倒是不会引起大量复制)#include<vector>#include<iostream>class A{ int a;public: A() { std::cout << "构造函数1"<<std::endl; } A(int a1):a(a1){ std::cout << "构造函数2"

2020-07-01 15:09:35 149

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除