如何在C++中找到向量中倒数第二个元素
How to find the second to last element in a vector in C++?
我正在尝试构建一个使用向量中倒数第二个元素的程序,到目前为止我已经使用了:
(arr2.rbegin()+1)
如果我在条件中使用比较运算符,例如:
if(arr2.rbegin()+1 == true)
我收到一条错误消息:no match for operator ==
许多答案和注释都有正确的想法,但语法非常难看。这里有两种很好的表达方式。
arr2.end()[-2] // end() is past the last element, -1 for last element, -2 for second-last
arr2.rbegin()[1] // rbegin() is reverse order starting at 0 for last element, 1 for second-last
演示:http://ideone.com/2cZeUq
它之所以有效,是因为vector
所具有的RandomAccessIterator需要提供operator[]
,使得it[n]
与*(it + n)
等效,就像指针一样。
所以你问题中的代码变成了
if (arr2.rbegin()[1]) // test penultimate element
查看此处的文档
http://www.cplusplus.com/reference/vector/vector/?kw=vector
我希望你能通过访问你的元素
secondToLast = myVector[myVector.size() - 2];
您可以尝试这样做:-
if(*(arr2.rbegin()+1))
有时列表中的项目可能少于2个,因此myVector.size()-2或其他直接访问器将抛出错误。我已经完成了以下操作。
if (myVector.size() > 1)
{
secondToLast = myVector[myVector.size() - 2];
}
这取决于"倒数第二个元素"的含义。采用以下迭代器定义。。。
vector<int>::iterator it = arr2.end();
it--;
it--;
您必须两次谴责迭代器,因为当您声明迭代器"指向"末尾时,它实际上引用了向量中最后一个元素之后的位置。
不要忘记,当你想要迭代器指向的值时,你必须取消引用它
cout << *it;
主要用于lulz,但如果您的元素是非标量的,并且您需要访问有问题的元素的成员,则可以使用++->
构造:
std::vector<std::pair<int, int>> arr = ...;
auto grug = arr.rbegin()[1].first;
auto leet = arr.rbegin()++->first;
assert(grug == leet);
它的工作方式是用++
对rbegin()
返回的迭代器进行后增量,然后用->
访问它。实际上,它优于最清晰的[1]
形式,因为它可以在任何迭代器上工作,而不仅仅是随机访问迭代器。
把它贴在评论上,然后拿一些爆米花。
有很多方法可以从后面访问元素您可以使用std::vector容器附带的back属性如果您想从后面访问一个元素(最后一个元素或最多n个)你可以做这个
std::vector vec{1,2,3};int lastsecond=vec.back()-1;会给你->2.
你可以检查向量的属性,其中有一个不错的比特。
https://en.cppreference.com/w/cpp/container/vector
- 如何找到数组中值倒数第二次出现的索引
- 如何打印第一个和最后一个元素的和,然后打印第二个和倒数第二个元素的总和,依此类推
- 使用索引与迭代器将向量迭代到倒数第二个元素
- 期望_DEATH的倒数是多少
- 如何获取列表中的倒数第二个元素
- 对于我扩展此程序来计算最高10x10矩阵的倒数的最简单方法是什么
- C++迭代到倒数第二个元素
- C++ 安全倒数到零"auto"整型
- 为什么我需要绑定姿势矩阵的倒数来计算动画
- 收藏中倒数第二的模板;reverse_iterator无法编译
- 如何从multi_index_container获取倒数第二个元素
- STL列表访问倒数第二个元素
- 如何在C++中找到向量中倒数第二个元素
- 在c++中不改变倒数第二位的情况下移动整数中的位
- 在迭代器中检查是否倒数第二
- 如何找到六位数的倒数第二位
- 从文件中重新读取int到数组中,倒数第二个元素总是错误的
- 获取 4 位整数的倒数第二个值
- 检查std::map的迭代器是否指向倒数第二个元素
- c++ map:第一次调用map[a],如何初始化map[a].倒数第二