[英]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.