STL之vector
来源:互联网 发布:wps office mac版下载 编辑:程序博客网 时间:2024/06/07 19:28
前言
vector类支持动态数据形式,和deque也有些类似。当需要操作类似数组功能时,vector是非常有效的。
头文件:
#include <vector>
vector基础
构造函数
vector模板定义
template
vector重载
vector重载了分配操作符,还定义了如下的比较操作符:
==,<,<=,>,>=,!=
vector支持随机访问迭代器,并重载了[]符号,意味着vector对象能像数组一样通过索引访问。
vector具体类型
size_type整数类型difference_type能够区分两个地址不同的整数类型reference元素的引用(T&)const_reference元素的常量引用(const T&)iterator迭代器const_iteratorconst迭代器reverse_iterator反向迭代器const_reverse_iteratorconst反向迭代器value_type存储在容器中值的类型(T)allocator_type分配器类型pointer指向元素的指针const_pointer指向元素的常量指针(const T*)vector成员函数
template void assign(InIter start, InIter end)将由start和end指定的序列赋值给vectorvoid assign(size_type num,const T &val)将num个值为val的元素赋值给vectorreference at(size_type i);const_reference at(size_type i) const返回指向元素i的引用。如果i索引越界,抛出out_of_range异常reference back();
const_reference back() const返回vector中最后一个元素的引用iterator begin();
const_iterator begin() const返回vector中第一个元素的迭代器size_type capacity() const返回vector当前容量。即在vector需要分配更多内存之前,当前vector所能保存元素的最大容量void clear()删除vector中所有元素bool empty() const如果调用的vector为空,返回true;否则返回falseiterator end();
const_iterator end() const返回指向vector尾部的迭代器iterator erase(iterator i)删除指向i的元素。返回迭代器指向被删除元素的下一个元素iterator erase(iterator start,iterator end)删除start和end之间元素。返回迭代器指向最后一个被删除元素的下一个元素reference front();
const_reference front() const返回vector中第一个元素的引用allocator_type get_allocator() const返回vector的分配器iterator insert(iterator i,const T &val)在元素i之前插入val。iterator insert(iterator i,size_type num,cosnt T &val)在元素i之前插入num个值val的元素template void insert(iterator i,InIter start,InIter end)在元素i之前插入由start和end定义的序列size_type max_size() const返回vector能保存的最大元素个数reference operator[](size_type i);
const_reference operator[](size_type i) const返回由i指定的元素引用void pop_back()删除vector中最后一个元素void push_back(const T &val)向vector尾部增加一个值为val的元素reverse_iterator rbegin();
const_reverse_iterator rbegin() const返回一个反向迭代器,迭代器起始位置指向vector结束位置reverse_iterator rend();
const_reverse_iterator rend() const返回一个反向迭代器,迭代器起始位置指向vector起始位置void reverse(size_type num)设置vector容量大小至少为numvoid resize(size_type num,T val=T())改变vector的大小为num。如果vector要扩容,则扩容元素值设为valsize_type size() const返回当前vector中元素个数void swap(vector
Code Example
1.构造函数
//三种构造函数//空构造函数vector<int> v1;//第二种构造函数vector<char> v2(8,'A');//第四种构造函数vector<char>::iterator p1 = v2.begin() + 2;vector<char>::iterator p2 = v2.end() - 2;vector<char> v3(p1,p2);int i=0;cout<<"v1.size() = "<<v1.size()<<" ; v2.size() = "<<v2.size()<<" ; v3.size() = "<<v3.size()<<"\n\n";cout<<"v1 : ";for (i=0;i<v1.size();i++){ cout<<v1.at(i);}cout<<"\n\n";cout<<"v2 : ";for (i=0;i<v2.size();i++){ cout<<v2.at(i);}cout<<"\n\n";cout<<"v2 : ";for (i=0;i<v3.size();i++){ cout<<v3.at(i);}cout<<"\n\n";
2.成员函数
vector<char> v1,v2;int i = 0;for (i=0;i<10;i++){ v1.push_back(i+'A');}cout<<"contents of v1 : \n";for (i=0;i<v1.size();i++){ cout<<v1.at(i)<<" "; //at方法}cout<<"\n\n";//begin和end方法vector<char>::iterator p1 = v1.begin() + 1;vector<char>::iterator p2 = v1.end() - 4;//assign方法//方法一v2.assign(p1,p2);cout<<"first way:\n";for (i=0;i<v2.size();i++){ cout<<v2[i]<<" ";}cout<<"\n\n";//方法二v2.assign(2,'X');cout<<"second way:\n";for (i=0;i<v2.size();i++){ cout<<v2[i]<<" ";}cout<<"\n\n";cout<<"back() = "<<v1.back()<<"\n\n";//begin和end方法cout<<"begin(): \n";p1 = v1.begin();while (p1!=v1.end()){ cout<<*p1<<" "; p1++;}cout<<"\n\n";cout<<"end(): \n";p2 = v1.end();while (p2!=v1.begin()){ p2--; cout<<*p2<<" ";}cout<<"\n\n";//capacity()方法cout<<"capacity() = "<<v1.capacity()<<"\n\n";//clear方法,size方法v2.clear();cout<<"v2 size = "<<v2.size()<<" ; capacity() = "<<v2.capacity()<<"\n\n";//empty方法cout<<"v1.empty() = "<<v1.empty()<<" ; v2.empty() = "<<v2.empty()<<"\n\n";//front()方法cout<<"front() = "<<v1.front()<<"\n\n";//insert方法:三种insert方法cout<<"insert(): \n";p1 = v1.begin() + 3;//v1.insert(p1,'X');//v1.insert(p1,4,'X');v2.assign(4,'Y');v1.insert(p1,v2.begin(),v2.end());for (i=0;i<v1.size();i++){ cout<<v1.at(i)<<" ";}cout<<"\n\n";//pop_back方法cout<<"pop_back(): \n";v2.pop_back();for (i=0;i<v2.size();i++){ cout<<v2.at(i)<<" ";}cout<<"\n\n";//push_back方法cout<<"push_back(): \n";v2.push_back('T');for (i=0;i<v2.size();i++){ cout<<v2.at(i)<<" ";}cout<<"\n\n";//reverse_iterator方法cout<<"reverse_iterator: \n";vector<char>::reverse_iterator ri = v1.rbegin();while (ri!=v1.rend()){ cout<<*ri<<" "; ri++;}cout<<"\n\n";ri = v1.rend();while (ri!=v1.rbegin()){ ri--; cout<<*ri<<" "; }cout<<"\n\n";//resize方法v2.resize(10,'Z');for (i=0;i<v2.size();i++){ cout<<v2.at(i)<<" ";}cout<<"\n\n";//swap方法v1.swap(v2);for (i=0;i<v1.size();i++){ cout<<v1.at(i)<<" ";}cout<<"\n\n";for (i=0;i<v2.size();i++){ cout<<v2.at(i)<<" ";}cout<<"\n\n";
0 0
- 【STL】STL容器之vector
- STL之vector模板
- STL之vector
- STL之vector
- stl之vector使用
- STL之vector详解
- STL之vector
- STL之vector使用
- STL之vector
- STL容器之vector
- STL容器之 vector
- STL之vector容器
- STL容器之vector
- STL之向量(vector)
- STL之Vector
- C++ STL之vector
- STL之Vector用法
- stl库之vector
- 百度开放云物接入IoT--Java客户端
- 服务端入门《一》(配置SrcureCRT 与 sshd_config )
- ThinkPHP的事务回滚了却还能插入数据到mysql数据库
- 非条件判断
- python 类的私有属性和方法
- STL之vector
- 使用Renci.SshNet实现sftp文件上传和下载
- 内存优化---Bitmap优化
- android studio 使用友盟多渠道打包
- 模板语言语法
- AndroidStudio 代码达到指定字符长度时自动换行
- 欧拉函数的性质及应用
- 修改Idea默认的全局设置,如Maven等
- RecyclerView实现加载更多