c++学习_for()_遍历向量

对一个向量对象的遍历,不可避免的需要使用循环来实现,c++提供了一种很简洁的方法,利用for循环来实现:
`

include

include

using namespace std;
int main()
{
vector list;
int num = 0;
while(cin >> num)
{
list.push_back(num);
}
for(auto it : list)
cout << it << endl;
return 0;
}
好像没啥需要注释的,就这了。


2018/2/22更:
刚刚碰到的问题:
这里分别是两种遍历向量的方式:

        for (int i = 0; i < str.size(); i++)
        {
            if (input == str.at(i).str)
            {
                str.at(i).count++;
                cout << str.at(i).count << endl;
                flag = 1;
                break;
            }
            flag = 0;
        }
        for (auto it : str)
        {
            if (input == it.str)
            {
                it.count++;
                cout << it.count << endl;
                flag = 1;
                break;
            }
            flag = 0;
        }

关于使用 auto 关键字来遍历向量有一点需要注意:auto 的作用是声明一个根据初始化值自定义类型的变量。
所以使用 auto 来遍历向量是先将 str 向量中的值拷贝到新建向量 it 中,然后对 it 进行操作;若不对向量进行写操作,则两者并无差异,若想在遍历向量的同时修改向量值,则应该使用常规方法去遍历。
还有一点就是两者的效率问题:几种遍历的时间比较
可能也会有其他方式去更方便的兼顾遍历及修改向量的方法,知道后再补充。


来打自己脸了,迭代器如下:

vector ::iterator iter = str.begin();
        while(iter != str.end())
        {
            if (input == (*iter).str)
            {
                (*iter).count++;
                //cout << "count++" << endl;
                flag = 1;
                break;
            }
            iter++;
            flag = 0;
        }

in 是我定义的一个结构体类型,迭代器有两种类型:vector < in >::iterator 和 vector < in > ::const_iterator
而 vector::begin() 和 vector::end() 的返回值类型为 vector < in >::iterator,另外迭代器在使用时切记 iter++ 以使迭代器指向下一个元素,否则就死循环GG思密达了!

你可能感兴趣的:(C++)