当前位置: 首页 > 工具软件 > Parallel STL > 使用案例 >

STL-algorithm

凌通
2023-12-01


一、STL是什么?

C++ 对模板(Template)支持得很好,STL 就是借助模板把常用的数据结构及其算法都实现了一遍,并且做到了数据结构和算法的分离。
STL封装了很多实用的容器,省时省力,能够让你将更多心思放到解决问题的步骤上,而非费力去实现数据结构诸多细节上。
几个基本概念:

容器

可以把它理解为存放数据的地方,常用的一些容器有 链表(list) 栈(stack) 动态数组 (vector) 双端队列(deque) 队,列(queue) 映射(map)

迭代器(iterator)

可以把它理解为指针类型,STL中的许多函数需要用到它们作为参数

算法

它们通常需要与容器和游标配合使用,使用它们,你可以方便地对容器中的数据进行各种常见的操作,如排序操作,寻找最大元素的操作等。

二、常用容器

vector

set

string

map

queue

priority_queue

stack

pair

三、容器使用

1、容器模板的使用

大致有下面6个步骤:

    1.添加相应的头文件(如 #include <list> )( 注意,没有 .h )

    2.添加std命名空间(用 using namespace std; )

    3.赋予模板具体的使用类型(如 typedef list<string> LISTSTR; )

    4.实例化模板(如 LISTSTR test; )

    5.实例化游标(如 LISTSTR::iterator i; )

    6.通过迭代器对象访问模板对象,例如

        // 逐个输出链表test中的元素
        for ( i =  test.begin(); i != test.end(); ++i )
            cout << *i << " ";

2、容器模板中的常用函数

assign()

赋值

empty()

容器为空则返回非0值

erase()

删除指定位置或指定范围内的元素

push_front()

从容器头部插入元素

push_back()

从容器尾部插入元素

pop_front()

删除第一个元素

pop_back()

删除最后一个元素

back()

返回最后一个元素的引用

front()

返回第一个元素的引用

begin()

返回指向第一个元素的游标 (与迭代器配合使用)

end()

返回指向最后一个元素的后一个位置的游标 (最后1个元素再加1) (与迭代器配合使用)

四、algorithm头文件常用函数

max(),min(),abs()

swap()

reverse()

next_permutation()

求全排列,返回该序列之后的全排序序列。

int num[3]={1,2,3};  
    do  
    {  
        cout<<num[0]<<" "<<num[1]<<" "<<num[2]<<endl;  
    }while(next_permutation(num,num+3));  
    //对num到num+3之间[0,3)的元素全排列。

fill()

当我们想对一个容器的值进行填充时,我们就可以使用fill()函数。

int array[8];   
  fill (array,array+4,5);   // myvector: 5 5 5 5 0 0 0 0
  fill (array+3,array+6,8);   // myvector: 5 5 5 8 8 8 0 0
## sort()

lower_boud(),upper_bound()

 类似资料: