繁体   English   中英

使用迭代器将int值赋给vector

[英]Assign int value to vector using iterator

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

编写一个程序来创建一个包含10个int元素的vector 使用迭代器,为每个元素分配一个两倍于当前值的值。 通过打印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;
}  

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

你可以这样做:

#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循环中计算

这是一个更清晰的接受答案版本,使用递增迭代器而不是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++;
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM