STL容器及常用算法

1. vector

vector<int>iv(2,9);

iv.size();

iv.push_back(1);

iv.pop_back();

vector<int>::iteratorivite=find(iv.begin(),iv.end(),1);  //STLfind()函数

iv.erase(ivite);

iv.insert(ivite,3,7);

iv.clear();

2. list

list<int>ilist;

ilist.size();

ilist.push_back(1);

list<int>::iterator ite;

ite=find(ilist.begin(),ilist.end(),3);

ilist.insert(ite,99);

ilist.erase(ite);

list的元素操作:

push_front()、push_back()、erase()、pop_front()、pop_back()、clear()、remove()、unique()、splice()、merge()、reverse()、sort()

ilist.splice(ite,ilist2);

ilist.reverse();

ilist.sort();                       //自身的sort()函数

3. deque

deque<int,alloc,8>ideq(20,9);

ideq.size();

ideq.push_back(3);

ideq.push_front(3);

deque<int,alloc,32>::iteratoritr;

itr=find(ideq.begin(),ideq.end(),99);

clear、erase、insert

4. stack

empty()

size()

top()

pop()

push()

5. queue

empty()

size()

front()

back()

push()

pop()

6. heap

#include<vector>

int ia[9]={0,1,2,3,4,5,6,7,8,9};

vector<int>ivec(ia,ia+9);

make_heap(ivec.begin(),ivec.end());                //STL库函数

push_heap(ivec.begin(),ivec.end());

pop_heap(ivec.begin(),ivec.end());

sort_heap(ivec.begin(),ivec.end());

7.priority_queue

#include<queue>

priority_queue<int>ipq(ia,ia+9);

size()

top()

pop()

8.set

#include<set>

set<int>iset(ia,ia+5);

iset.size();

iset.count(3);

iset.insert(3);

iset.erase(1);

set<int>::iteratorite=iset.begin();

ite1=find(iset.begin(),iset.end(),1);              //STL函数

ite1=iset.find(3);                            //自身的find函数

企图通过迭代器来改变set元素,是不被允许的。

9.map

#include<map>

Map<string,int>simap;

Simap[string(“jjhou”)]=1;

Pair<string,int>value(string(“davaid”),5);

Simap.insert(value);

Map<string,int>::iteratorsimap_iter=simap.begin();

Simap_iter->first;

Simap_iter->second;

Map<string,int>::iteratorite1;

Ite1=simap.find(string(“jerry”));            //自身的find()函数

10.算法

Copy()

int myints[]={10,20,30,40,50,60,70};

std::vector<int> myvector (7);

std::copy ( myints, myints+7,myvector.begin() );

count()

int myints[] = {10,20,30,30,20,10,10,20};   // 8 elements
int mycount = std::count (myints, myints+8, 10);
std::cout << "10 appears " << mycount << " times.\n";

search()

std::vector<int>haystack;

// set somevalues:        haystack: 10 20 30 40 5060 70 80 90

for (inti=1; i<10; i++) haystack.push_back(i*10);

// usingdefault comparison:

intneedle1[] = {40,50,60,70};

std::vector<int>::iteratorit;

it =std::search(haystack.begin(), haystack.end(), needle1, needle1+4);

if(it!=haystack.end())

std::cout<< "needle1 found at position " << (it-haystack.begin())<< ‘\n‘;

else std::cout << "needle1 notfound\n";

find()

intmyints[] = { 10, 20, 30, 40 };

int * p;

p =std::find (myints, myints+4, 30);

sort()

bool myfunction (int i,int j) { return (i<j); }

intmyints[] = {32,71,12,45,26,80,53,33};

std::vector<int>myvector (myints, myints+8);

// usingdefault comparison (operator <):

std::sort(myvector.begin(), myvector.begin()+4);

// usingfunction as comp

std::sort(myvector.begin()+4, myvector.end(), myfunction);

// usingobject as comp

std::sort(myvector.begin(), myvector.end(), myobject);

时间: 2024-10-10 12:31:03

STL容器及常用算法的相关文章

STL中的常用算法

C++STL 常用算法,使用时包含#include <algorithm> 一.非变异算法 是一组不破坏操作数据的模板函数,用来对序列数据进行逐个处理.元素查找.子序列搜索.统计和匹配.非变异算法具有极为广泛的适用性,基本上可应用与各种容器. 1查找容器元素find 它用于查找等于某值的元素.它在迭代器区间[first,last)(闭开区间)上查找等于value值的元素,如果迭代器i所指的元素满足*i=value,则返回迭代器i:未找到满足条件的元素,返回last.函数原型:find( v1.

STL容器的常用用法

1.vector: #include <vector>#include <algorithm> vector<int> v;vector<int> v(10);//定义大小为10的int型向量容器.vector<int> v(10,3);//定义大小为10,每个元素为3. v.push_back(2);//尾部添加元素2.v[0]=2;v[1]=3;//下标访问. vector<int>::iterator it;//迭代器访问for

常用STL容器及算法举例

一 常用容器举例 1 vector: vector类似于动态数组,直接访问元素,从后面快速插入或者删除,示例代码如下: [cpp] view plaincopyprint? #include <iostream> #include <vector>//包含vector using namespace std;//指定命名空间 int main() { cout<<"----------vector test-----------"<<en

【C/C++学院】0828-STL入门与简介/STL容器概念/容器迭代器仿函数算法STL概念例子/栈队列双端队列优先队列/数据结构堆的概念/红黑树容器

STL入门与简介 #include<iostream> #include <vector>//容器 #include<array>//数组 #include <algorithm>//算法 using namespace std; //实现一个类模板,专门实现打印的功能 template<class T> //类模板实现了方法 class myvectorprint { public: void operator ()(const T &

STL 常用算法

1.      STL 常用算法 l  for_each() 例1 //普通函数 voidFuncShowElemt2(int &t) { cout << t << " "; } vector<int> v1; v1.push_back(1); v1.push_back(3); v1.push_back(5); //通过回调函数  谁使用for_each 谁去填写回调函数的入口地址 for_each(v1.begin(), v1.end(),

STL——配接器、常用算法使用

学习STL,必然会用到它里面的适配器和一些常用的算法.它们都是STL中的重要组成部分. 适配器 在STL里可以用一些容器适配得到适配器.例如其中的stack和queue就是由双端队列deque容器适配而来.其实适配器也是一种设计模式,该种模式是将一个类的接口转换成用户希望的另外一个接口.简单的说:就是需要的东西就在眼前,但却不能用或者使用不是很方便,而短时间又无法改造它,那我们就通过已存在的东西去适配它. STL中的适配器一共有三种: ①应用于容器的即容器适配器:比如stack和queue就是对

[C++ STL] 常用算法总结

1 概述 STL算法部分主要由头文件<algorithm>,<numeric>,<functional>组成.要使用 STL中的算法函数必须包含头文件<algorithm>,对于数值算法须包含<numeric>,<functional>中则定义了一些模板类,用来声明函数对象. 2 常用算法介绍 STL中算法大致分为四类: 非可变序列算法:指不直接修改其所操作的容器内容的算法. 可变序列算法:指可以修改它们所操作的容器内容的算法. 排序

C++笔记(6):标准模板库STL:容器、迭代器和算法

STL(Standard Template Library)是C++标准库的一部分.STL的代码从广义上讲分为三类:容器.迭代器和算法. 1.容器 2.迭代器 3.算法  -------------------------------------------------------------------------------------------------------------------------- 1.容器 顺序容器容器是特定类型对象的集合.顺序容器为程序员提供控制元素存储和访问

STL标准库-算法-常用算法

摘要: 摘要: 摘要: 技术在于交流.沟通,本文为博主原创文章转载请注明出处并保持作品的完整性 介绍11种STL标准库的算法,从这11种算法中总结一下算法的基本使用 1.accumulate() 累加 2.for_each() for一段区间 做你指定的行为 3.replace(), replace_if(), replace_copy() 替换函数 4.count(), count_if() 计数 5.find() 查找 6.sort() 排序 7.binary_search()查看元素是否在