没有合适的资源?快使用搜索试试~ 我知道了~
关于c++ stl常用数据结构的总结,如vector,list,map等..
资源推荐
资源详情
资源评论
STL的代码从广义上讲分为三类:algorithm(算法)、container(容器)和iterator(迭代器),几乎所有的代码都采用了模板类和模版函数的方式.
在C++标准中,STL被组织为下面的13个头文件:<algorithm>、<deque>、<functional>、<iterator>、<vector>、<list>、<map>、<memory>、<numeric>、<queue>、<set>、<stack>和<utility>。
一:
vector:
从后面快速的插入与删除,直接访问任何元素。
可以看作动态数组。自动分配一块连续的内存空间进行数据存储。
当存储的数据超过分配的空间时,会重新分配一块内存块:
首先,会申请一块更大的内存块;然后,将原来的数据拷贝到新的内存块中;
其次,销毁掉原内存块中的对象(调用对象的析构函数);最后,将原来的
内存空间释放掉。
随机访问方便,支持[]/vector.at()。
vector被设计成只能在后端进行追加和删除操作。
只能在最后进行push和pop,不能在头进行。
vector 类中定义了4中种构造函数:
默认构造函数:构造一个初始长度为0的空向量.
vector<int>v1;
构造函数:有一个可选参数,如果预定义了size,他的成员都被赋为0.
vector<int>v2(init_size,0);
复制构造函数:构造一个新的向量,作为已存在的向量的完全复制.
vector<int>v3(v2);
带两个常量参数的构造函数:
vector<int>v4(first,last);
方法:
c.assign(beg,end) c.assign(n,elem) 将(beg; end)区间中的数据赋值给c。将n个elem的拷贝赋值给c。
c. at(idx) 传回索引idx所指的数据,如果idx越界,抛出out_of_range。 c.back() 传回最后一个数据,不检查这个数据是否存在。
c.begin() 传回迭代器中的第一个数据地址。
在C++标准中,STL被组织为下面的13个头文件:<algorithm>、<deque>、<functional>、<iterator>、<vector>、<list>、<map>、<memory>、<numeric>、<queue>、<set>、<stack>和<utility>。
一:
vector:
从后面快速的插入与删除,直接访问任何元素。
可以看作动态数组。自动分配一块连续的内存空间进行数据存储。
当存储的数据超过分配的空间时,会重新分配一块内存块:
首先,会申请一块更大的内存块;然后,将原来的数据拷贝到新的内存块中;
其次,销毁掉原内存块中的对象(调用对象的析构函数);最后,将原来的
内存空间释放掉。
随机访问方便,支持[]/vector.at()。
vector被设计成只能在后端进行追加和删除操作。
只能在最后进行push和pop,不能在头进行。
vector 类中定义了4中种构造函数:
默认构造函数:构造一个初始长度为0的空向量.
vector<int>v1;
构造函数:有一个可选参数,如果预定义了size,他的成员都被赋为0.
vector<int>v2(init_size,0);
复制构造函数:构造一个新的向量,作为已存在的向量的完全复制.
vector<int>v3(v2);
带两个常量参数的构造函数:
vector<int>v4(first,last);
方法:
c.assign(beg,end) c.assign(n,elem) 将(beg; end)区间中的数据赋值给c。将n个elem的拷贝赋值给c。
c. at(idx) 传回索引idx所指的数据,如果idx越界,抛出out_of_range。 c.back() 传回最后一个数据,不检查这个数据是否存在。
c.begin() 传回迭代器中的第一个数据地址。
c.capacity() 返回容器中数据个数。
c.clear() 移除容器中所有数据。
c.empty() 判断容器是否为空。
c.end() // 指向迭代器中末端元素的下一个,指向一个不存在元素。 c.erase(pos) // 删除pos位置的数据,传回下一个数据的位置。 c.erase(beg,end) 删除[beg,end)区间的数据,传回下一个数据的位置。 c.front() 传回第一个数据。
get_allocator 使用构造函数返回一个拷贝。
c.insert(pos,elem) // 在pos位置插入一个elem拷贝,传回新数据位置 c.insert(pos,n,elem) // 在pos位置插入n个elem数据,无返回值 c.insert(pos,beg,end) // 在pos位置插入在[beg,end)区间的数据。无返回值c.max_size() 返回容器中最大数据的数量。
c.pop_back() 删除最后一个数据。
c.push_back(elem) 在尾部加入一个数据。
c.rbegin() 传回一个逆向队列的第一个数据。
c.rend() 传回一个逆向队列的最后一个数据的下一个位置。 c.resize(num) 重新指定队列的长度。
c.reserve() 保留适当的容量。
c.size() 返回容器中实际数据的个数。
c1.swap(c2) // 将c1和c2元素互换
example:
#include<iostream>
#include<vector>
using namespace std;
typedef vector<int> INTVECTOR;
void main(void)
{
INTVECTOR vec 1;
INTVECTOR vec2(10,6);
INTVECTOR vec3(vec2.begin(),vec2.begin()+3);
INTVECTOR::iterator i;
cout<<"vec1.begin()--vec1.end():"<<endl;
for(i=vec1.begin();i!=vec1.end();++i)
cout<<*i<<"";
cout<<endl;
c.clear() 移除容器中所有数据。
c.empty() 判断容器是否为空。
c.end() // 指向迭代器中末端元素的下一个,指向一个不存在元素。 c.erase(pos) // 删除pos位置的数据,传回下一个数据的位置。 c.erase(beg,end) 删除[beg,end)区间的数据,传回下一个数据的位置。 c.front() 传回第一个数据。
get_allocator 使用构造函数返回一个拷贝。
c.insert(pos,elem) // 在pos位置插入一个elem拷贝,传回新数据位置 c.insert(pos,n,elem) // 在pos位置插入n个elem数据,无返回值 c.insert(pos,beg,end) // 在pos位置插入在[beg,end)区间的数据。无返回值c.max_size() 返回容器中最大数据的数量。
c.pop_back() 删除最后一个数据。
c.push_back(elem) 在尾部加入一个数据。
c.rbegin() 传回一个逆向队列的第一个数据。
c.rend() 传回一个逆向队列的最后一个数据的下一个位置。 c.resize(num) 重新指定队列的长度。
c.reserve() 保留适当的容量。
c.size() 返回容器中实际数据的个数。
c1.swap(c2) // 将c1和c2元素互换
example:
#include<iostream>
#include<vector>
using namespace std;
typedef vector<int> INTVECTOR;
void main(void)
{
INTVECTOR vec 1;
INTVECTOR vec2(10,6);
INTVECTOR vec3(vec2.begin(),vec2.begin()+3);
INTVECTOR::iterator i;
cout<<"vec1.begin()--vec1.end():"<<endl;
for(i=vec1.begin();i!=vec1.end();++i)
cout<<*i<<"";
cout<<endl;
剩余11页未读,继续阅读
资源评论
jinyun1121
- 粉丝: 1
- 资源: 18
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 基于CSS的响应式鲜花网站全屏效果设计源码
- 基于JavaScript的访客预约系统设计源码
- 基于Vue和ECharts的工作租房数据可视化系统设计源码
- 1040g0cg310ravpiu6ibg5pg00tsipsln3ju2d0g 2
- 基于Python的SAR图像去噪CNN-NLM设计源码
- redhat6升级到redhat7,过程redhat6.x-> redhat6.10->rehat7.9 主版本最高版本
- 基于Django的流程引擎设计源码
- 基于Node.js的Express框架与MySQL的后台管理系统设计源码
- 基于Java的Flink流批一体数据处理快速集成开发框架设计源码
- FirstFilterOrderCompare
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功