几个有关STL vector的问题

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。 


猜你喜欢

转载自blog.csdn.net/bubbler_726/article/details/80907829