gpt4 book ai didi

qt - 从 QVector 中删除所有小于 0 的元素

转载 作者:行者123 更新时间:2023-12-04 13:30:45 30 4
gpt4 key购买 nike

我有一个 QVector

 QVector(48, 64,  31, -2, 14, 5, 7, -3, -1, 13) 

我想知道如何使用Qt机制来删除所有小于0的元素。
我如何以简单的方式做到这一点?谢谢

最佳答案

QVector 的接口(interface)允许它与 std 算法一起使用,因此您可以使用 erase-remove idiom

QVector<int> vec;
...
vec.erase(std::remove_if(vec.begin(), vec.end(), [](int i) { return i < 0; }),
vec.end());

解释方式:
remove_if采用一系列迭代器( vec.begin(), vec.end()),并将所有提供的 lambda 返回 true 的元素移动到末尾。然后它将一个迭代器返回到该范围的开头。
erase获取一系列迭代器( remove_ifvec.end() 的返回值)并将它们从向量中删除。

工作示例:
#include <QVector>
#include <iostream>

int main()
{
QVector<int> vec { 1, 2, 3, -1, -2, -3, 4, 5, 6, -7, -8, -1, 1, 2, 3 };

// erase all elements less than 0
vec.erase(std::remove_if(vec.begin(), vec.end(), [](int i) { return i < 0; }),
vec.end());

// print results
for (int i : vec)
std::cout << i << ' ';
std::cout << '\n';

return 0;
}

输出:

./a.out  
1 2 3 4 5 6 1 2 3

关于qt - 从 QVector 中删除所有小于 0 的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47412287/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com