使用迭代器将int值分配给向量

Assign int value to vector using iterator

本文关键字:分配 向量 int 迭代器      更新时间:2023-10-16

我在C++初级读本(3.23)中做了将近两天的小练习。我已经尝试了许多为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个元素来完成这个练习,每个元素都必须是不同的值,并且必须由迭代器来完成赋值
谢谢你抽出时间。

以下是公认答案的一个更干净的版本,使用了递增迭代器的概念,而不是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++;
    }
}

您可以这样做:

#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循环

中计算