1、迭代器与指针的认识
vector
<int> s
;
vector
<int>* p
=&s
;
s是一个vector型的对象,它不是数组,但它重载了[ ],支持下标运算。p是指向这个对象的指针,p++,p[1]这种屁都不是,因为s就一个,s不是对象数组的名字。 这下知道为什么要有迭代器了吧,因为指向s的指针不可以移动,想在s元素上移动就得使用s内部的“指针”。所以封装了迭代器,来在s 上“移动”。 STL中很多算法都是通过迭代器来操作容器的,如果使用容器内元素的指针,一来破坏了封装性,二来是算法无法独立,因为指针的类型太多了
(*p
)[1];
2、vector的各种初始化方法
vector
<int> s(2);
vector
<int> s(2,9);
vector
<int> s
[2];
vector
<int> p(s
);
vector
<int> s({1,2,3,4,5})
vector
<int> s(arrayName
,arrayName
+n
)
好像不能在容器初始化的时候,把另一个容器的一部分复制过来,还是用copy吧