将元素插入到已排序的向量中并保持元素已排序
inserting element to a sorted vector and keeping elements sorted
所以我有一个向量,我希望元素始终排序。我应该如何将一个元素插入到该向量中,并在弹出元素时保持它们的排序。然而,我查看了std::lower_bound
,它给出了与我想要的相反的结果。
例如,这就是我想要的:当我弹出向量中的所有元素时,它应该是:1 2 3 4 5。这意味着矢量必须将它们存储为5 4 3 2 1。如果使用下界,向量将它们存储为1 2 3 4 5,并弹出为5 4 3 2 1。此外,将传入一个比较函子,以便lower_bound
函数使用该比较函子。有没有一种方法可以取比较函子的对立面?
要始终对向量进行排序,您应该始终将新元素插入正确的位置。由于您想按升序弹出元素,而vector只提供pop_back((方法,所以您应该按降序对元素进行排序。所以首先你需要找到合适的位置,然后插入:
typedef std::vector<int> ints;
void insert( ints &cont, int value ) {
ints::iterator it = std::lower_bound( cont.begin(), cont.end(), value, std::greater<int>() ); // find proper position in descending order
cont.insert( it, value ); // insert before iterator it
}
相关文章:
- 查找两个排序向量中共有的元素
- C++ 如何比较n个排序的整数向量以找到互元素?
- 如何在 c++ 中根据第二个元素按降序对列表进行排序
- 对的排序向量 (std::vector<pair<int, int>>) 按对的第一个元素搜索并更新第二个元素值
- 高级选择排序 - 在一次迭代中搜索两个元素
- 为什么用户定义的函数不按照给定的顺序对相同长度的元素进行排序?
- 为什么这个选择排序算法仍然切换一个元素,当它已经是其他元素中最小的元素时?
- 快速排序 - 三个中位数枢轴选择 - 某些元素顺序不正确
- 将一系列已排序的元素划分为相邻组
- 如何通过保持第一个插入的位置来对列表中插入的其余元素进行排序?
- 保持排序的数据结构,允许log N插入时间,并且可以返回我在log N中查找的元素的索引
- "x"的所有元素都存在于"y"(排序向量)中吗?
- 如何根据对的第二个元素对 STL c++ 中的一组对进行排序?
- 如何在保持它们连接到同一元素的同时对 2 个数组进行排序?
- C++:结构与用于排序元素的函数
- 无法在阵列中重新排序元素-rapidjson
- 比较两个向量中的未排序元素
- 我如何在队列中排序元素
- c++中的Hashmap不排序元素
- c++插入排序元素