使用迭代器将int值分配给向量
Assign int value to vector using iterator
我在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循环
相关文章:
- 存储在堆分配向量中的指针的免费存储
- 重新分配向量时,向量中的内存会发生什么情况
- 是否可以在堆中分配向量,但通过引用进行访问
- 如何在以下程序中分配向量
- 通过引用分配向量
- 分配向量而不复制它们
- 是否可以动态分配向量?
- 为什么从工厂函数分配向量并在循环中迭代它会导致段错误
- 如何正确分配C 向量
- 如何在C++中使用"new"动态分配向量数组?
- 如何知道何时重新分配向量的内部数组
- 预分配向量是否更有效
- 在C++中动态分配向量的安全方法是什么
- 两种不同的解分配向量的方法为什么一种不起作用?
- 将元素添加到基于范围的预分配向量中是否合法
- 使用循环重新分配向量中的字符串
- C++:动态内存分配+向量
- 尝试使用while循环取消分配向量,任务管理器显示内存使用正在增加
- 动态分配向量
- 动态分配向量(或向量的向量)