使用迭代器将int值赋给vector

时间:2013-06-25 04:45:40

标签: c++ iterator

我正在参加C ++ Primer(3.23)的小练习将近2天。我已经尝试了很多方法为vector<int>赋值。我会给你一个实际的练习,我到目前为止工作和编码,但它完全错了。我做了很多研究,但没有发现任何有用的东西。

编写程序以创建包含10个vector元素的int。使用迭代器,为每个元素分配一个两倍于当前值的值。通过打印vector

来测试程序

这是我的代码

int main(){  
vector<int> num(10);

for (auto it=num.begin();it != num.end() ;++it)//iterating through each element in vector 
{
    *it=2;//assign value to vector using iterator
    for (auto n=num.begin() ;n!=num.end();++n)//Iterating through existing elements in vector 
    {   
        *it+=*n;// Compound of elements from the first loop and 2 loop iteration
    }    
    cout<<*it<<" ";
}

keep_window_open("~");
return 0;
}  

我的问题是我不知道如何使用迭代器为每个int元素分配vector值(我做了1而不是5个元素)!另外,我对如何使用vector中的10个元素进行此练习打破了我的头脑,每个元素必须是不同的值,并且迭代器必须执行赋值。
谢谢你的时间。

2 个答案:

答案 0 :(得分:4)

你可以这样做:

#include <iostream>
#include <vector>

using namespace std;

int main(){  

    vector<int> num(10);

    int initial_value = 2;
    *num.begin() = initial_value;
    cout<<*num.begin()<<" ";
    for (std::vector<int>::iterator it=num.begin()+1; it != num.end() ;++it)//iterating thru each elementn in vector 
    {
        *it=*(it-1) * 2;//assign value wtih 2 times of previous iterator

        cout<<*it<<" ";
    }

    return 0;
}

你只需要给第一个迭代器提供一些初始值,其余的是在for循环中计算

答案 1 :(得分:4)

这是一个更清晰的接受答案版本,使用递增迭代器而不是for循环的概念:

#include <iostream>
#include <vector>

using namespace std;

int main()
{  
    vector<int> num(10);

    int n = 1;
    vector<int>::iterator it = num.begin();
    vector<int>::iterator itEnd = num.end();

    while (it != itEnd)
    {
        *it = n = n*2;
        cout << *it << " ";
        it++;
    }
}