您的位置:首页 > 其它

11/7/2 STL vector<T> (2)

2011-07-02 11:35 253 查看
1.矢量的容量与大小
容量(capacity)指矢量目前所占据的内存的大小,表示一种存储的能力
大小(size)表示目前矢量的容量中已经使用部分的大小,
vec.size() 返回矢量中元素的个数,如果矢量中只有第0号元素,则size为1
empty() 函数返回一个bool值,是用来判断矢量是否为空(即 size 是否为0)如果为空,则返回true,不为空则返回false
max_size() 函数可能不常用,是用来返回矢量vector<T>最大容量的函数,容量与T类型相关(【疑问】仅与T类型有关?)
resize() 函数重新制定矢量的size,如果指定了更大的size,则用第二参数补全剩余的空间,如果未指定第二参数,int 默认为0, 类类型调用默认构造函数
而如果指定了更小的size,则截取矢量尾部的元素
一个有趣的现象是,在矢量自动增加容量的时候,容量的增加量是原容量的一半。如果原容量为13,则增加6
2.用迭代器遍历矢量的实例
迭代器的类型是vector<T>::iterator
1:  for(vector<T>::iterator iter = vec.begin(); iter < vec.end(); iter++)
2:          cout<<*iter<<endl;


.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, "Courier New", courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; } 3.访问矢量中元素以及增删操作
at() 函数类似于 下标访问运算符 [] ,但是当越界的时候 at() 函数会抛出一个 out_of_range 类型的异常
front() 函数可以返回矢量的第一个元素的值,而不是迭代器
back() 函数返回矢量的尾元素的值,而不是迭代器
pop_back() 函数可以删除矢量尾的一个元素,多次操作可以清空矢量
但也可以直接调用 clear() 函数,删除矢量的所有元素,将大小size 置为0,但不改变矢量的容量
insert() 函数的3个版本:
1.insert(iterator , T) 可以用来在迭代器所指位置插入一个T类型对象
2.insert(iterator , int n, T) 用来在迭代器所指的位置插入 n 个 T类型对象
3.insert(iterator ,iterator , iterator ) 用来在第一个迭代器所指的位置,插入第二个迭代器与第三个迭代器之间的序列,注意,第三个迭代器指向要插入的元素序列的最后一个元素的下一个位置
erase() 两个版本:
版本一:一个参数,类型为迭代器,用来删除该迭代器所指位置的元素
版本二:二个参数,类型均为迭代器,用来删除序列,第二个迭代器指元素序列最后一个元素的下一个位置
swap() 交换两个矢量,两个矢量的 T 要相同,交换后,容量,大小,内容均交换(可以理解为是交换名称)
实例:vec1.swap(vec2);
assign() 用另一个序列替代矢量中的 全部 内容,注意,使用该函数,第一步先要删除矢量中的所有内容。 有两个版本。
版本1:assign(iterator , iterator ) 两个迭代器指向一个序列的始末位置,第二个迭代器仍是指末尾元素的下一位, 也可以用常规指针来代替迭代器,注意,第二个指针也是指向序列的末尾元素的下一个位置
版本2:assign(int , T ) 替换为n个T类型元素
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: