STL
文章平均质量分 72
master_feng2009
这个作者很懒,什么都没留下…
展开
-
在list中查找find
如果list存储的是能够比较大小的数值型数据,如int,double等,可以直接采用find进行查找,例子:#include #include #include using namespace std;int_tmain(int argc, _TCHAR* argv[]){ listint> listTemp; listint>::ite原创 2013-07-24 10:56:29 · 1401 阅读 · 0 评论 -
STL 统计vector容器中指定对象元素出现的次数:count()与count_if()算法
1 统计vector向量中指定元素出现的次数:count()算法 利用STL通用算法统计vector向量中某个元素出现的次数:count()算法统计等于某个值的对象的个数。#include "stdafx.h"#include #include #include //包含通用算法using namespace std;int_tmain(int a原创 2013-09-20 20:54:48 · 34673 阅读 · 0 评论 -
list排序成员函数对string对象与char*对象排序的差别
对list容器中的对象排序,不能使用sort()算法,只能采用其自身的排序函数sort()。因为,算法sort()只支持随机存取的容器的排序,如vector等。对基本数据对象list排序:成员函数sort()情况1:对string排序#include "stdafx.h"#include #include #include using namespa原创 2013-09-20 23:02:24 · 1644 阅读 · 0 评论 -
向vector容器中插入对象:insert()成员函数
vector容器的成员函数insert()把一个或多个对象插入到iterator指示的位置。所查找的元素将出现在iterator指出的位置之前。#include "stdafx.h"#include #include #include #include #include using namespace std; voidPrintInt(原创 2013-09-20 23:16:57 · 4701 阅读 · 0 评论 -
删除vector容器中的对象元素的三种方法:pop_back, erase与remove算法
向量容器的成员函数pop_back()可以删除最后一个元素,而函数erase()可以删除由一个iterator指出的元素,也可以删除一个指定范围的元素。 还可以采用通用算法remove()来删除vector容器中的元素,不同的是,采用remove一般情况下不会改变容器的大小,而pop_back()与erase()等成员函数会改变容器的大小。#include "stdafx.h"原创 2013-09-21 21:04:32 · 80913 阅读 · 4 评论 -
如何快速交换两个向量容器中的内容
#include "stdafx.h"#include #include #include using namespace std; voidPrintInt(constint&nData){ cout}int_tmain(int argc, _TCHAR* argv[]){ vectorint> vecInt1,ve原创 2013-09-21 21:13:04 · 6377 阅读 · 0 评论 -
查找第一次出现/不出现指定对象的位置:lower_bound()与upper_bound()
可以利用lower_bound()成员函数查找向量容器中第一次出现某个对象的位置;upper_bound()成员函数查找向量容器中第一次不出现某个对象的位置。#include "stdafx.h"#include #include #include using namespace std;int_tmain(int argc, _TCHAR* argv[])原创 2013-09-21 21:29:55 · 1754 阅读 · 0 评论 -
替换deque中的内容:assign()成员函数
通过迭代器可以修改deque中的内容,但是一次只能替换一个对象;利用assign()函数可以实现一次替换多个元素的目的。例子:#include "stdafx.h"#include #include #include using namespace std;int_tmain(int argc, _TCHAR* argv[]){ dequein原创 2013-09-23 10:49:23 · 1618 阅读 · 0 评论 -
将两个list链表通过merge合并时注意的三个问题
注意:1)merge()是将两个有序的链表合并成另一个有序的链表,如果有一个链表不是有序的那么在执行代码时会报错:说链表不是有序的。2)还有,两个链表中的内容排序顺序与合并时采用的排序顺序必须一致,如果不一致,也会报错,说链表不是有序的。如想要降序合并两个链表,那么合并前的两个链表也必须是按降序排列的。3)另外,当执行完merge()后,右边的链表将变为空。 例子:list v原创 2013-09-24 10:53:33 · 8753 阅读 · 5 评论 -
链表list容器中通过splice合并链表与merge的不同,及需要注意的问题
#include "stdafx.h"#include #include #include using namespace std;int_tmain(int argc, _TCHAR* argv[]){ listint> c1,c2,c3,c4; c1.push_back(3); c1.push_back(6); c原创 2013-09-24 21:01:37 · 3544 阅读 · 0 评论 -
如何保证list容器中任意连续对象元素都不相同:unique()
成员函数unique()可以保证链表容器中连续两个对象具有唯一性,即要求链表容器中的任意连续对象元素值是不同的,但不能保证链表容器中所有对象的唯一性。例子:#include "stdafx.h"#include #include #include using namespace std;int_tmain(int argc, _TCHAR* argv[])原创 2013-09-24 22:04:52 · 2056 阅读 · 0 评论 -
从vector容器中查找一个子串:search()算法
如果要从vector容器中查找是否存在一个子串序列,就像从一个字符串中查找子串那样,次数find()与find_if()算法就不起作用了,需要采用search()算法:例子:#include "stdafx.h"#include #include #include using namespace std;int_tmain(int argc, _TCHAR*原创 2013-09-20 22:03:17 · 6821 阅读 · 0 评论 -
STL 查找vector容器中的指定对象:find()与find_if()算法
1 从vector容器中查找指定对象:find()算法 STL的通用算法find()和find_if()可以查找指定对象,参数1,即首iterator指着开始的位置,参数2,即次iterator指着停止处理的地方。注意:包含开始和结束的位置的元素。例子:#include "stdafx.h"#include #include #include using原创 2013-09-20 21:48:21 · 26746 阅读 · 0 评论 -
vector容器成员函数resize与reserve的区别
resize是设置向量的大小:即向量的大小与容量相同。而reserve是设置向量的容量,并不改变向量的大小。另外:向量的最大大小是固定住,不可改变。例子:#include "stdafx.h"#include #include using namespace std; typedefvectorint> VEC_INT;int_tmain(int ar原创 2013-09-20 15:35:25 · 1960 阅读 · 0 评论 -
如何在list中查找
如果list存储的是能够比较大小的数值型数据,如int,double等,可以直接采用find进行查找,例子:#include #include #include using namespace std;int_tmain(int argc, _TCHAR* argv[]){ listint> listTemp; listint>::ite原创 2013-07-24 10:50:27 · 2167 阅读 · 0 评论 -
STL利用输入迭代器读入文本文件中的数据
传统的C++读入文本文件的数据方式大概是:ifstream dataFile;dataFile.open(“inits.txt”);double dArray[10]; //或者根据文本文件中的数据数目动态申请for(int i=0; i{ cout>>dArray[i];}dataFile.close(); 可以采用输入迭代器读入文本文件中的数据原创 2013-07-24 16:54:30 · 1082 阅读 · 0 评论 -
STL删除vector或list的方法及注意的问题
STL vector list 删除对象原创 2013-07-25 21:57:54 · 1277 阅读 · 0 评论 -
删除list或vector中的自定义结构体对象
vector删除结构体元素需要采用remove_if()函数:#include "stdafx.h"#include #include #include //不要忘记这个头文件using namespace std;//定义结构体typedef struct T_Node{ int nID; double dValue;原创 2013-07-25 22:14:50 · 3064 阅读 · 0 评论 -
关于利用STL中的sort算法对向量等容器进行排序的问题
使用该算法需要包含头文件#include ; 并且声明命名空间usingnamespace std;.该算法默认是按照由小到大排序的,如果需要由大到小排序,那么有两种办法:(1)假设有向量vector v;可以先使用sort排序,即sort(v.begin(), v.end());然后再逆序即可,即reverse(v.begin(),v.end());这个方法会耗时更多,因为多了一次逆序的操作原创 2013-09-13 23:10:11 · 1991 阅读 · 0 评论 -
利用copy函数简单快速输出/保存vector向量容器中的数据
如果要输出vector中的数据我们可以通过循环语句输出,更加简便的方法是利用copy函数直接输出,例子:#include "stdafx.h"#include #include #include using namespace std;int_tmain(int argc, _TCHAR* argv[]){ //利用copy函数快速输出向量容器原创 2013-09-15 23:00:06 · 3916 阅读 · 0 评论 -
如何快速方便的输出向量vector容器中不重复的内容
在vector容器中,存入的内容难免会出现重复,那么如何快速输出或提前非重复的那些数据呢,即重复的数据只输出一次,直观的方法是每次输出都要通过循环比较是否已经输出过,这种方法还是比较费时的,可以利用unique函数简化代码,例子:#include "stdafx.h"#include #include #include #include using na原创 2013-09-15 23:33:57 · 2905 阅读 · 3 评论 -
STL中的set集合容器进行集合运算:并、交、差实例
集合容器的集合运算:并、交、差:#include "stdafx.h"#include #include #include //集合运算:并、交、差需要包含该头文件using namespace std;structltstr{ bool operator()(const char* s1,const char* s2)const原创 2013-09-19 22:22:52 · 5095 阅读 · 0 评论 -
multiset集合容器的集合运算:并、交、差
set和multiset的内部通常是采用平衡二叉树来实现。当放入元素时,会按照一定的排序方法自动排序,默认是按照less不可以直接修改set或multiset容器中的元素值,因为这样就违反了元素自动排序的规则。如果想修改一个元素的值,则必须先删除原有的元素,再插入新的元素。multiset容器的集合并、交、差运算(注意:并集运算的结果)#include "stdafx.h"#inc原创 2013-09-19 23:03:47 · 2253 阅读 · 0 评论 -
STL集合容器set按照由小到大或者由大到小的顺序存放元素
(1)由小到大setint,lessint>> M; M.insert(1960); M.insert(1952); M.insert(1771); M.insert(1812); M.insert(1960); M.insert(2000); setint,lessint>>::iterator N= M.beg原创 2013-09-19 23:20:43 · 12464 阅读 · 1 评论 -
面试题:编写一个将十进制数转换为任意进制的算法或函数
题目:设计一个函数,输入参数1是一个十进制整数,参数2是要待转换的进制,用m表示,如m=8,代表将参数1转换为8进制。并给出输出。 思路:除积取余,倒排余数。代码:#include "stdafx.h"#include #include using namespace std; dequeint>Hexadecimal_Conversion(int原创 2013-09-25 23:08:28 · 13790 阅读 · 0 评论