C++标准库学习之Vector
2011-07-14 01:04
141 查看
C++标准库学习之Vector
Vectors 包含着一系列连续存储的元素,其行为和数组类似。访问Vector中的任意元素或从末尾添加元素都可以在常量级时间复杂度内完成,而查找特定值的元素所处的位置或是在Vector中插入元素则是线性时间复杂度。 #include<vector>
1、构造函数:
C++ Vectors可以使用以下任意一种参数方式构造:
无参数 - 构造一个空的vector : vector()
数量(num)和值(val) - 构造一个初始放入num个值为val的元素的Vector : vector(size_type num, const TYPE &val)
vector(from) - 构造一个与vector from 相同的vector : vector(const vector& from)
迭代器(start)和迭代器(end) - 构造一个初始值为[start,end)区间元素的Vector(注:半开区间) : vector(input_iterator start, input_iterator end)
2、对vector进行赋值或比较
C++ Vectors能够使用标准运算符: ==, !=, <=, >=, <, 和 >. 要访问vector中的某特定位置的元素可以使用 [] 操作符.
两个vectors被认为是相等的,如果:
它们具有相同的容量
所有相同位置的元素相等.
vectors之间大小的比较是按照词典规则.
语法:
v1 == v2
v1 != v2
v1 <= v2
v1 >= v2
v1 < v2
v1 > v2
v[]
注:不得不承认,从来没留意vector还有这个功能,C++果然强大
3、对Vector中的元素赋值
assign() 函数要么将区间[start, end)的元素赋到当前vector,或者赋num个值为val的元素到vector中.这个函数将会清除掉为vector赋值以前的内容.
语法:
void assign( input_iterator start, input_iterator end );
void assign( size_type num, const TYPE &val );
4、取得指定位置的函数:
TYPE at( size_type loc ),注意[]运算符也能实现同样功能,但是at()函数比[]运算符安全
5、 iterator begin():返回一个指向当前vector起始元素的迭代器
iterator end():返回一个指向当前vector末尾元素的下一位置的迭代器.
rbegin() 返回Vector尾部的逆迭代器
rend() 返回Vector起始的逆迭代器
注:迭代器的种类真多,很有必要对这些种类进行归纳总结啊!
6、 TYPE back():返回当前vector最末一个元素的引用
TYPE front():返回当前vector起始元素的引用
7、删除函数:
erase函数要么删作指定位置loc的元素,要么删除区间[start, end)的所有元素.返回值是指向删除的最后一个元素的下一位置的迭代器.
语法:
iterator erase( iterator loc );
iterator erase( iterator start, iterator end );
8、插入元素到Vector中
insert() 函数有以下三种用法:
1)、在指定位置loc前插入值为val的元素,返回指向这个元素的迭代器,
2)、在指定位置loc前插入num个值为val的元素
3)、在指定位置loc前插入区间[start, end)的所有元素 .
语法:
iterator insert( iterator loc, const TYPE &val );
void insert( iterator loc, size_type num, const TYPE &val );
void insert( iterator loc, input_iterator start, input_iterator end );
9、pop_back() 移除最后一个元素
push_back() 在Vector最后添加一个元素
10、返回vector的内存分配器:
allocator_type get_allocator();
注:什么是内存分配器?
11、其他一些常用的函数:
void reserve( size_type size ):为当前vector预留至少共容纳size个元素的空间.(注:感觉没啥作用)
max_size() 返回Vector所能容纳元素的最大数量(上限 )
capacity():返回当前vector在重新进行内存分配以前所能容纳的元素数量.
clear() 清空所有元素
empty() 判断Vector是否为空(返回true时为空)
size() 返回Vector元素数量的大小
void resize( size_type size, TYPE val ):改变当前vector的大小为size,且对新创建的元素赋值val
void swap( vector &from ):交换当前vector与vector from的元素
Vectors 包含着一系列连续存储的元素,其行为和数组类似。访问Vector中的任意元素或从末尾添加元素都可以在常量级时间复杂度内完成,而查找特定值的元素所处的位置或是在Vector中插入元素则是线性时间复杂度。 #include<vector>
1、构造函数:
C++ Vectors可以使用以下任意一种参数方式构造:
无参数 - 构造一个空的vector : vector()
数量(num)和值(val) - 构造一个初始放入num个值为val的元素的Vector : vector(size_type num, const TYPE &val)
vector(from) - 构造一个与vector from 相同的vector : vector(const vector& from)
迭代器(start)和迭代器(end) - 构造一个初始值为[start,end)区间元素的Vector(注:半开区间) : vector(input_iterator start, input_iterator end)
2、对vector进行赋值或比较
C++ Vectors能够使用标准运算符: ==, !=, <=, >=, <, 和 >. 要访问vector中的某特定位置的元素可以使用 [] 操作符.
两个vectors被认为是相等的,如果:
它们具有相同的容量
所有相同位置的元素相等.
vectors之间大小的比较是按照词典规则.
语法:
v1 == v2
v1 != v2
v1 <= v2
v1 >= v2
v1 < v2
v1 > v2
v[]
注:不得不承认,从来没留意vector还有这个功能,C++果然强大
3、对Vector中的元素赋值
assign() 函数要么将区间[start, end)的元素赋到当前vector,或者赋num个值为val的元素到vector中.这个函数将会清除掉为vector赋值以前的内容.
语法:
void assign( input_iterator start, input_iterator end );
void assign( size_type num, const TYPE &val );
4、取得指定位置的函数:
TYPE at( size_type loc ),注意[]运算符也能实现同样功能,但是at()函数比[]运算符安全
5、 iterator begin():返回一个指向当前vector起始元素的迭代器
iterator end():返回一个指向当前vector末尾元素的下一位置的迭代器.
rbegin() 返回Vector尾部的逆迭代器
rend() 返回Vector起始的逆迭代器
注:迭代器的种类真多,很有必要对这些种类进行归纳总结啊!
6、 TYPE back():返回当前vector最末一个元素的引用
TYPE front():返回当前vector起始元素的引用
7、删除函数:
erase函数要么删作指定位置loc的元素,要么删除区间[start, end)的所有元素.返回值是指向删除的最后一个元素的下一位置的迭代器.
语法:
iterator erase( iterator loc );
iterator erase( iterator start, iterator end );
8、插入元素到Vector中
insert() 函数有以下三种用法:
1)、在指定位置loc前插入值为val的元素,返回指向这个元素的迭代器,
2)、在指定位置loc前插入num个值为val的元素
3)、在指定位置loc前插入区间[start, end)的所有元素 .
语法:
iterator insert( iterator loc, const TYPE &val );
void insert( iterator loc, size_type num, const TYPE &val );
void insert( iterator loc, input_iterator start, input_iterator end );
9、pop_back() 移除最后一个元素
push_back() 在Vector最后添加一个元素
10、返回vector的内存分配器:
allocator_type get_allocator();
注:什么是内存分配器?
11、其他一些常用的函数:
void reserve( size_type size ):为当前vector预留至少共容纳size个元素的空间.(注:感觉没啥作用)
max_size() 返回Vector所能容纳元素的最大数量(上限 )
capacity():返回当前vector在重新进行内存分配以前所能容纳的元素数量.
clear() 清空所有元素
empty() 判断Vector是否为空(返回true时为空)
size() 返回Vector元素数量的大小
void resize( size_type size, TYPE val ):改变当前vector的大小为size,且对新创建的元素赋值val
void swap( vector &from ):交换当前vector与vector from的元素
相关文章推荐
- C++ Primer学习笔记2--c++标准库中的 vector、string 和 bitset 类型
- C++标准库vector类型学习笔记
- C++标准库类型vector学习笔记
- vector学习小节(二)
- C++ 容器vector的范例学习
- 学习笔记之vector向量容器
- 【C++】vector容器和list容器中使用单个迭代器的erase函数学习笔记
- 机器学习技法课程学习笔记3 -- Kernel Support Vector Machine
- Irrlicht 源码学习笔记 【position2d.h】 【vector2d.h】
- c++学习笔记之vector容器与list容器
- 斯坦福大学公开课 :机器学习课程(Andrew Ng)——5、监督学习:Support Vector Machine,引
- 转载:C++ vector 类学习笔记
- C++标准库学习笔记-5-(Container)
- C++学习笔记(字符串string、vector_deque、queue,multiset、map、multimap、容器拷贝问题)
- C&C++标准库学习--<ctype>--参考
- Machine Learning机器学习 - Supervised Learning监督学习 - SVM(Support Vector Machine)
- C++入门学习——标准模板库之vector
- C++学习之STL容器vector
- C++标准库vector类(简单用法记录)
- STL学习系列之二——序列容器(vector)