如何在c++中使用rbegin()和advance(iterator,1)在列表中添加两个值?
How can I add two values in a list in C++ using rbegin() and advance(iterator,1)?
我正在尝试使用c++中的列表计算斐波那契数列,按照指示。我留下了如何改进它的笔记,我根本不明白我被要求做什么。我如何使用rbegin()和advance(iterator,1)来添加以前的值并计算一个新的值?
这是我之前写的。
列表mutableFibonacci(int position){
list<int> series;
int first = 0; //Remove
int second = 1; //Remove
for (int i = 1; i <= position; i++)
{
if (i == 1)
series.push_back(1);
else
{
//We can get the last value and the value before from the series, like so, series.rbegin(); then get the value from the reverse iterator. Then we can call advance(iterator, 1) to get to the previous value. We can get the second to last value.
series.push_back(first + second);
first = second;
second = series.back();
}
}
return series;
}
这是我试图做的修复它。
for (int i = 1; i <= position; i++)
{
if (i == 1)
series.push_back(1);
else
{
int last = series.rbegin();
int previous = advance(series, 1);
series.push_back(last + previous);
}
}
return series;
series.push_back(1);
series.push_back(1);
for (int i = 3; i <= position; ++i){ //First 2 elements inititalised
list<int>::reverse_iterator it = series.rbegin(); //End of the list
list<int>::reverse_iterator it2 = it; //Copy the iterator
advance(it2,1); //Move the iterator
series.push_back(*(it)+*(it2)); //Add the sum
}
如果没有int
,它看起来像这样。前面的auto
是c++ 11定义变量类型的快捷方式(因此,不必键入list<int>::reverse_iterator
,可以键入auto
)
首先你的初始化是不正确的,你需要初始化至少2个元素,否则std::advance()
会有未定义的行为:
if (i < 3)
series.push_back(1);
rbegin()
将给出迭代器(在这种情况下是反向迭代器),而不是int
,后者在语义上表现得像指针:
list<int>::reverse_iterator it = series.rbegin();
int last = *it;
std::advance( it, 1 );
series.push_back( last + *it );
不确定,为什么推荐std::advance()
, std::next()
更适合这里
相关文章:
- 如何在 sqlite3 中的表中添加整数列表
- 有什么方法可以将元素添加到列表中,如图所示?
- 测试驱动开发 c++:如何将对象添加到向量中,将歌曲添加到播放列表并对其进行测试
- 将新元素添加到列表中,并返回对该元素的引用?
- 可视化 如何将 CString 值列表添加到 MFC C++ 中的组合框中?
- 通过在带有 C++ 的列表中添加连续元素来计算新的整数列表
- CSUF EPP - 你有什么想法(在添加到链接列表末尾时遇到麻烦)
- 将集合的随机元素添加到列表中,然后将其从原始集合中移除
- 如何使用LLVM C++API向保留节点列表添加
- 是否可以使用OpenMP并行化一个列表,该列表可以在每次迭代中添加新元素
- 如何确保我的节点被添加到链接列表中
- 如何读取文件的内容,如果文件中的单词重复,请将它们添加到列表中?
- 在 MFC 组合框中设置文本,而不将其添加到列表中
- 在C++中,如何将参数添加到"Args&&... args"参数列表中?
- C++将静态多态类自添加到子类的 constexpr 列表中
- 添加气泡排序代码以排列列表
- 双链接列表添加元素不起作用,不知何故它总是保持为空
- 如何从列表中将对象添加到图表中?
- 在运行时添加列表和从列表中删除
- MFC应用程序在添加列表控件元素时卡住