1,使用iterator进行遍历和直接使用下标遍历的区别
for(vector<int>::iterator it=v.begin();it!=v.end();it++)
for(int i=0;i<v.size();i++)
2,如何判断一个vector是空的
vector<int> v1;
v1.empty()则是返回一个布尔型变量
3,vector中元素的插入
c.insert(pos,elem) |
在pos位置插入一个elem拷贝,传回新数据位置。 |
c.insert(pos,n,elem) |
在pos位置插入n个elem数据。无返回值。 |
c.insert(pos,beg,end) |
在pos位置插入在[beg,end)区间的数据。无返回值。 |
4,获取vector的大小
v.capacity();获取vector的大小
v.size();获取vector中实际元素的个数
5,复制一个vector
cvector<Elem> c1(c2)
6,struct和class的区别
struct能包含成员函数,能实现多态,也能实现继承。
struct与class的区别在于,前者在继承时默认是public,而后者是private。
struct A
{
char a;
};
struct B : A
{
char b;
};
class B : public A 平时这样写就是为了声明公有继承。
当然,到底默认是public继承还是private继承,取决于子类而不是基类。
我的意思是,struct可以继承class,同样class也可以继承struct,那么默认的继承访问权限是看子类到底是用的struct还是class。如下:
struct A{};class B : A{}; //private继承
struct C : B{}; //public继承
struct作为数据结构的实现体,它默认的数据访问控制是public的,而class作为对象的实现体,它默认的成员变量访问控制是private的
我依旧强调struct是一种数据结构的实现体,虽然它是可以像class一样的用。我依旧将struct里的变量叫数据,class内的变量叫成员,虽然它们并无区别。
到底是用struct还是class,完全看个人的喜好,你可以将程序里所有的class全部替换成struct,它依旧可以很正常的运行。但我给出的最 好建议,还是:当你觉得你要做的更像是一种数据结构的话,那么用struct,如果你要做的更像是一种对象的话,那么用class。