我有一个 QVector
QVector(48, 64, 31, -2, 14, 5, 7, -3, -1, 13)
Run Code Online (Sandbox Code Playgroud)
我想知道如何使用Qt机制删除所有小于0的元素。
如何以简单的方式执行此操作?
谢谢
QVector 的接口允许它与标准算法一起使用,所以你可以只使用擦除删除成语
QVector<int> vec;
...
vec.erase(std::remove_if(vec.begin(), vec.end(), [](int i) { return i < 0; }),
vec.end());
Run Code Online (Sandbox Code Playgroud)
通过解释:
remove_if采用一系列迭代器 ( vec.begin(), vec.end()),并将提供的 lambda 为其返回 true 的所有元素移动到最后。然后它返回一个迭代器到这个范围的开始。
erase获取一系列迭代器(来自remove_if和的返回值vec.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;
}
Run Code Online (Sandbox Code Playgroud)
输出:
Run Code Online (Sandbox Code Playgroud)./a.out 1 2 3 4 5 6 1 2 3
| 归档时间: |
|
| 查看次数: |
3389 次 |
| 最近记录: |