C++ STL之vector详解
来源:互联网 发布:ppt数据分析图 编辑:程序博客网 时间:2024/05/16 17:21
Vectors
构造函数。
函数列表如下:
Constructors
Operators
assign()
at()
back()
begin()
capacity()
clear()
empty()
end()
erase()
front()
get_allocator()
insert()
max_size()
pop_back()
push_back()
rbegin()
rend()
reserve()
resize()
size()
swap()
////////////////////////////////////////////////////////////////////////////
构造函数
语法:
vector();
vector(
vector(
vector(
C++
无参数
数量(num)和值(val)
vector(from)
迭代器(start)和迭代器(end)
举例,下面这个实例构造了一个包含5个值为42的元素的Vector
vector<int>
运算符
语法:
v1
v1
v1
v1
v1
v1
v[]
C++
两个vectors被认为是相等的,如果:
它们具有相同的容量
所有相同位置的元素相等.
vectors之间大小的比较是按照词典规则.
assign函数
语法:
void
void
assign()
at函数
语法:
TYPE
at()
vector<int>
for(
cout
}
这段代码访问了vector末尾以后的元素,这将可能导致很危险的结果.以下的代码将更加安全:
vector<int>
for(
cout
}
取代试图访问内存里非法值的作法,at()
back
语法:
TYPE
back()
vector<int>
for(
v.push_back(i);
}
cout
这段代码产生如下结果:
The
begin
语法:
iterator
begin()函数返回一个指向当前vector起始元素的迭代器.例如,下面这段使用了一个迭代器来显示出vector中的所有元素:
vector<int>
vector<int>::iterator
for(
cout
capacity
语法:
size_type
capacity()
clear
语法:
void
clear()函数删除当前vector中的所有元素.
empty
语法:
bool
如果当前vector没有容纳任何元素,则empty()函数返回true,否则返回false.例如,以下代码清空一个vector,并按照逆序显示所有的元素:
vector<int>
for(
}
while(
}
end
语法:
iterator
end()
erase
语法:
iterator
iterator
erase函数要么删作指定位置loc的元素,要么删除区间[start,
//
vector<char>
for(
int
vector<char>::iterator
vector<char>::iterator
for(
{
}
这段代码将会显示如下输出:
BCDEFGHIJ
CDEFGHIJ
DEFGHIJ
EFGHIJ
FGHIJ
GHIJ
HIJ
IJ
J
front
语法:
TYPE
front()函数返回当前vector起始元素的引用
get_allocator
语法:
allocator_type
get_allocator()
示例:vector<int>v3(
insert
语法:
iterator
void
void
insert()
在指定位置loc前插入值为val的元素,返回指向这个元素的迭代器,
在指定位置loc前插入num个值为val的元素
在指定位置loc前插入区间[start,
举例:
//创建一个vector,置入字母表的前十个字符
vector<char>
for(
alphaVector.push_back(
//插入四个C到vector中
vector<char>::iterator
alphaVector.insert(
//显示vector的内容
for(
cout
这段代码将显示:
CCCCABCDEFGHIJ
max_size
语法:
size_type
max_size()
pop_back
语法:
void
pop_back()函数删除当前vector最末的一个元素,例如:
vector<char>
for(
int
vector<char>::iterator
for(
alphaVector.pop_back();
for(
cout
}
这段代码将显示以下输出:
ABCDEFGHI
ABCDEFGH
ABCDEFG
ABCDEF
ABCDE
ABCD
ABC
AB
A
push_back
语法:
void
push_back()添加值为val的元素到当前vector末尾
rbegin
语法:
reverse_iterator
rbegin函数返回指向当前vector末尾的逆迭代器.(译注:实际指向末尾的下一位置,而其内容为末尾元素的值,详见逆代器相关内容)
示例:
vector<int>v1;
for(int
{
}
vector<int>::reverse_iterator
pos=v1.rbegin();
cout<<*pos<<"
pos++;
cout<<*pos<<endl;
输出结果为:5
rend
语法:
reverse_iterator
rend()函数返回指向当前vector起始位置的逆迭代器.
示例:
vector<int>v1;
for(int
{
}
vector<int>::reverse_iterator
pos=v1.rend();
pos--;
cout<<*pos<<"
pos--;
cout<<*pos<<endl;
输出结果为:1
reserve
语法:
void
reserve()函数为当前vector预留至少共容纳size个元素的空间.(译注:实际空间可能大于size)
resize
语法:
void
resize()
resize
初次接触这两个接口也许会混淆,其实接口的命名就是对功能的绝佳描述,resize就是重新分配大小,reserve就是预留一定的空间。这两个接口即存在差别,也有共同点。下面就它们的细节进行分析。
因两接口的源代码相当精简,以至于可以在这里贴上它们:
void
void
示例:
#include<iostream>
#include<vector>
using
void
{
for(int
{
}
v1.resize(5,8);//多出的两个空间都初始化为8,
for(i=0;i<v1.size();i++)//resize与reserver并不会删除原先的元素以释放空间
{
}
cout<<endl;
v1.reserve(7);//
{
}
cout<<endl;
cout<<v1.size()<<endl;
cout<<v1.capacity()<<endl;
}
输出结果为:
1
1
5
7
size
语法:
size_type
size()
swap
语法:
void
swap()函数交换当前vector与vector
示例:
v1.push_back(i);
v2.push_back(4);
cout<<v1[j]<<"
cout<<v2[k]<<"
输出结果为:
1
1
转自:http://blog.sina.com.cn/s/blog_9f1c0931010180cy.html
- C++ STL之vector详解
- C++STL之vector详解(转)
- STL之vector详解
- STL之vector详解
- STL 之vector详解
- c++STL之vector
- C++STL之vector
- C++STL之vector
- C++STL之vector
- Stl详解之vector类
- C++ STL之vector详解
- STL之vector使用详解
- C++ STL之vector详解
- STL之vector容器详解
- C++ STL之vector详解
- C++ STL之vector详解
- C++ STL之vector详解
- C++ STL之vector详解
- 东方欲晓,莫道君行早
- [leetcode] 418. Sentence Screen Fitting 解题报告
- C++标准库和标准模板库
- codevs 3325 过山车 DP
- HDU ACM 11 2033 人见人爱A+B
- C++ STL之vector详解
- react 安装
- Add, Search, Delete Node in BST.
- 格局,能力和资源
- 我干了一件傻事,在ViewController的subclass中企图使用initWithFrame
- 在github上浏览html文件
- 勾股定理一日一证连载132
- Android 编程下两种方式注册广播的区别
- 数字签名过程