迭代运算
Iterator arithmetic
我现在正在处理iterators
算术运算和堆栈小问题
我需要对vector<int>
的第一个和最后一个元素进行求和,然后对vector<int>
的第二个和最后元素,对vector<int>
的1个和最后
示例:
按用户输入数字1 2 3 4 5 6 7 8 9
输出应为10 11 12 13 14 15 16 17
一般来说,代码应该这样做1+9 2+9 3+9 4+9 5+9 6+9 7+9 ......
因此,基本上我需要使用iterator
和成员函数*.begin() , *.end()
进行此算术运算的实际代码!我尝试了很多方法,但没有想到如何只使用.begin()
和.end()
进行此操作。我找到了其他成员函数,但这个函数是在STD库中解释的,而不是在基础知识级别。因此,如果可能的话,我需要帮助只使用begin()
和end()
成员函数来编写代码。
到目前为止我得到的代码
int main()
{
vector<int> numset;
int num_input;
auto beg=numset.begin(), end=numset.end();
while (cin>>num_input)
{
numset.push_back(num_input);
}
for (auto it = numset.begin()+1; it !=numset.end(); ++it)
{
// *it=*it+1+nuset.end(); -- Wrong X
// *it+=(end-beg)/2; -- Totally wrong(and totally stupid) X
// *it + numset.back() -- can't use other member functions X
//////// I've stack here dont know what code need //////
cout<<*it<<endl;
}
谢谢你抽出时间。
您执行的操作是*it+*(it-1)
。(在代码中添加更多的括号和空格可能会有所帮助。)这会从序列中添加两个相邻的元素。
序列中的最后一个元素是numset.back()
。因此,请尝试*it + numset.back()
。不需要从第二个元素开始,因为您确实希望打印第一个和最后一个元素的总和。如果您不想打印最后一个元素本身的和,那么您应该在end() - 1
处停止。
相关文章:
- 使用std::multimap迭代器创建std::list
- 来自 std::list 的迭代器 .end() 按预期返回"0xcdcdcdcdcdcdcdcd"但 .begin()
- C++中带有List类的迭代器Segfault
- 迭代时从向量和内存中删除对象
- 如何在c++迭代器类型中包装std::chrono
- 带过滤器的现代迭代c++集合
- 在c++中检查长方体是否尽可能快地重叠(无迭代)
- C++矢量迭代
- 集合上的输出迭代器:assign和increment迭代器
- Boost Spirit,获取迭代器内部语义动作
- 擦除while循环中迭代的元素
- 实现一个在集合上迭代的模板函数
- 对于set上的循环-获取next元素迭代器
- 在向量内的向量上迭代
- 如何在c++中对stl迭代器进行平均运算
- end()迭代器上的算术运算
- C++迭代运算
- 迭代运算
- 对字符串副本执行迭代器运算的更简单方法
- OpenCV 矩阵运算是否比简单的循环迭代更快?