如何保留std::vector的最后一个元素
前言
希望std::vector
保留末尾元素并清除其他,怎么做最优雅?
尝试
比较容易想到的方法是先清除后添加
std::vector<int> vec{1,2,3,4};
int last = vec.back();
vec.clear();
vec.emplace_back(last);
可以,还想看看别的方法?
std::vector<int> vec{1,2,3,4};
vec.erase(inner_points.begin(), inner_points.end() - 1);
看起来优雅多了,又没有更短的?
插曲
不如问问NewBing怎么看?
好吧,要不是看他头头是道我差点都信了……
看看GodBolt怎么说?
// Type your code here, or load an example.
#include <vector>
#include <iostream>
int main()
{
std::vector vec{0,1,2,3};
vec.resize(1, vec.back());
for(int e: vec)
{
std::cout << e << std::endl;
}
return 0;
}
// output: 0
看看文献std::vector::resize(size_type count, const value_type& value)
方法分两种情况讨论:
count < size
只能从末尾开始删除元素,且vlaue
无效count > size
从末尾开始用value
对容器进行填充
结论
现阶段GPT写的代码还是要认真检查下再用……