STL容器操作函数介绍

718 阅读3分钟

vector

vecterarray相似。两者唯一的差别在于空间的运用的灵活性。 array是静态的,vecter是动态的。

操作

  • 定义: vector<int> iv(2,9); 定义一个vector,里面有两个元素2、9
  • empty(): 空则返回ture,不空则返回false
  • size(): 返回容器元素个数。
  • push_back(x): 将元素x插入尾部。
  • pop_back() : 将尾端元素弹出,但是不能访问,该函数返回void
  • front(): 查看第一个元素。
  • back() : 查看最后一个元素。
  • erase(iterator position): 清除某位置上的元素。
  • insert(position,n,x): 在position之前插入nx

list

list不是连续空间不能像vector一样用[]

操作

  • 定义:list<int> ilist; 定义一个存放正数类型的链表。
  • empty(): 空则返回ture,不空则返回false
  • size(): 返回容器元素个数。
  • front(): 查看第一个元素。
  • back() : 查看最后一个元素。
  • push_back(x): 将元素x插入尾部。
  • pop_back() : 将尾端元素弹出,但是不能访问,该函数返回void
  • push_front(x): 将元素x插入头部。
  • pop_front() : 将头部元素弹出,但是不能访问,该函数返回void
  • insert(position,x): 在position之前插入x
  • remove(x): 在x的元素全部移除。
  • unique(x): 移除数值相同的连续元素。

deque

deque是一种双向开口的连续线性空间。

操作

  • 定义: deque<int> ideq(20,9); 定义一个deque,里面有209
  • empty(): 空则返回ture,不空则返回false
  • size(): 返回容器元素个数。
  • front(): 查看第一个元素。
  • back() : 查看最后一个元素。
  • push_back(x): 将元素x插入尾部。
  • pop_back() : 将尾端元素弹出,但是不能访问,该函数返回void
  • push_front(x): 将元素x插入头部。
  • pop_front() : 将头部元素弹出,但是不能访问,该函数返回void
  • erase(iterator position): 清除某位置上的元素。
  • insert(position,x): 在position之前插入x

stack

stack是一种先入后出的容器,底层有一个deque,底层也可以用 list实现。

操作

  • 定义:stack<int> istack; 定义一个存放intstack
  • empty(): 空则返回ture,不空则返回false
  • size(): 返回容器元素个数。
  • top(): 返回栈顶的元素。
  • pop(): 弹出一个元素。
  • push(x): 压入一个元素。

slist

slist是一个双向链表。操作和list相同。

set

set特性是,所有元素都会根据元素的键值自动被排序。set的元素不允许两个元素有相同的键值。底层是一个RB_tree

操作

  • 定义:set<int> iset(ia,ia+5);``ia是一个数组。
  • empty(): 空则返回ture,不空则返回false
  • size(): 返回容器元素个数。
  • count(x): 返回容器中,x元素的个数。
  • insert(x): 插入元素x

map

map中所有的元素会根据键值排序,且所有元素都是pair,pair第一元素被视为键值,第二元素被视为实值。可以改变实值,但不可以改变键值。

操作

  • 定义:
map<string, int> simap{
	{"jjhou",1},
    {"jehou",1},
    {"jahou",1},
}; //以string为键值,以int为实值。

pair<string, int> value(string("david"),5);

-insert(value): 插入pair value

  • simap[a]: 取键值为a的值。

multset

用法与set完全相同,唯一差别在于它允许键值重复。

multmap

用法与map完全相同,唯一差别在于它允许键值重复。

unorder_map和unorder_set

用法与前面一样,只不过底层不是用rb_tree实现而是用hashtable实现。

priority_queue

构建一个队列,并按照给定准则对其排序。

  • 定义:priority_queue<Type,Container,Functional>
  • empty(): 空则返回ture,不空则返回false
  • size(): 返回容器元素个数。
  • top(): 查看第一个元素。
  • push(x): 将元素x插入队列,并排序。
  • pop() : 将头部元素弹出,但是不能访问,该函数返回void
  • emplace(x): 原地构造一个元素并插入队列。
  • swap(): 交换内容