vector
其实向量vector这个容器很容易使用,它的接口也很容易理解,使用之前需要引用头文件<vector>即可,在此不想赘述。c++的官方文档介绍的也非常详细点击打开链接。在此只结合文档和网上一些博客自己总结下常用的接口和注意事项。
常用接口
begin() 返回第一个元素的迭代器
end() 返回最后一个元素的下一个元素的迭代器(注:是最后一个的下一个)
capacity() 返回vector所能容纳的元素数量
size() 返回Vector实际元素数量的大小
clear() 清空所有元素
empty() 判断Vector是否为空(返回true时为空)
erase() 删除指定元素 (时间复杂度为O(n),后面数据前移)
insert() 插入元素到Vector中
push_back() 在Vector最后添加一个元素
pop_back() 移除最后一个元素
reserve() 设置Vector最小的元素容纳数量
front() 返回第一个元素
back() 返回最末一个元素
at() 返回指定位置的元素
注意事项
迭代器iterator,类似于指针,在此的定义方式为 vector <int >::iterator it; 用*it可以访问其元素,在遍历向量的时候可以使用迭代器,有效地避免越界访问的问题。例如:for(vector<int>::iterator it = a.begin();it != a.end();it++)cout<<*it<<endl;
构造函数的问题:
vector <type > name();(最常用)
vector<type >name( size_type num, const TYPE &val );
vector<type >name( const vector &from );
vector<type >name( input_iterator start, input_iterator end );
Stack
queue
出队,如例:q.pop(); 弹出队列的第一个元素,注意,并不会返回被弹出元素的值。
访问队首元素,如例:q.front(),即最早被压入队列的元素。
访问队尾元素,如例:q.back(),即最后被压入队列的元素。
判断队列空,如例:q.empty(),当队列空时,返回true。
访问队列中的元素个数,如例:q.size()
priority_queue
friend bool operator< (node n1, node n2)
{
return n1.priority < n2.priority;
}
int priority;
int value;
};