64,688
社区成员
发帖
与我相关
我的任务
分享
第二种比较好,主要的好处在于:
vector<int> c(10, 5); // 将容器c初始化为10个int型数据5
vector<int>::itertor iter;
for (;iter = c.begin() ; iter != c.end() ; ++iter)
{
*iter = 2; // 将所有数据改成2
}
如果突然我们想把vector类型的容器c改成list类型的容器c,我们只需要将
vector<int> c(10, 5) 改成 list<int> c(10, 5);
就修改这么一个地方就可以了,其它地方不需要改的,而如果用第一种方法的
话,不可以用上述的方法直接改一下的,因为list容器不支持下标随机访问。
第一种中的vector[i]使用的方法是*(begin()+i),而第二种的操作只需要指针++。但是第一种以size()来决定循环的执行次数要比第二种以迭代器是否等同来决定循环要快。具体的速度还要看应用。但是第二种更具有扩展,移植的能力。毕竟前向迭代器是最普遍的。