QtC++编程,容器里的一组数据为(0,0,0,0,0,0,0,0,1,2,5,6,8,7,0,0,0,0,0,0)如何将不为0的数删除
时间: 2023-09-13 17:05:26 浏览: 71
你可以使用 QVector 类来存储这组数据,并使用 QVector 的 erase() 函数将所有不为 0 的数删除。具体的代码如下所示:
```c++
#include <QVector>
#include <algorithm>
int main()
{
QVector<int> data = {0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 5, 6, 8, 7, 0, 0, 0, 0, 0, 0};
// 使用算法库中的 remove_if() 函数删除所有不为 0 的数
data.erase(std::remove_if(data.begin(), data.end(), [](int x) { return x != 0; }), data.end());
return 0;
}
```
在上面的代码中,我们使用了算法库中的 remove_if() 函数,该函数可以删除满足特定条件的所有元素。在这里,我们使用 lambda 表达式来指定删除所有不为 0 的元素。最后,我们使用 QVector 的 erase() 函数来真正删除这些元素。
相关问题
QtC++编程,QVector里的一组数据为(0,0,0,0,0,0,0,0,1,2,5,6,8,7,0,0,0,0,0,0)如何将不为0的数每秒钟删除一次
可以使用 QTimer 定时器来实现每隔一段时间删除 QVector 中不为 0 的数。具体的实现步骤如下:
1. 在程序中定义一个 QTimer 定时器对象,设置定时器的时间间隔为 1000 毫秒(即 1 秒)。
2. 在 QTimer 的 timeout() 信号的槽函数中,遍历 QVector 中的元素,将不为 0 的数删除。
3. 在遍历 QVector 的过程中,如果遇到不为 0 的数,则使用 QVector 的 remove() 函数将该元素删除。
下面是代码示例:
```cpp
#include <QCoreApplication>
#include <QVector>
#include <QTimer>
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
QVector<int> vec = {0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 5, 6, 8, 7, 0, 0, 0, 0, 0, 0};
QTimer timer;
timer.setInterval(1000); // 设置定时器的时间间隔为 1 秒
QObject::connect(&timer, &QTimer::timeout, [&vec]() {
for (int i = 0; i < vec.size(); i++) {
if (vec.at(i) != 0) {
vec.remove(i); // 删除不为 0 的数
i--; // 删除元素后,需要将下标减 1
}
}
});
timer.start(); // 启动定时器
return a.exec();
}
```
上述代码中,使用 lambda 表达式定义了 QTimer 的 timeout() 信号的槽函数。每次定时器超时后,遍历 QVector 中的元素,将不为 0 的数删除。注意,删除元素后,需要将下标减 1,否则会有元素被遗漏。
qt bytesavailable()函数返回为0的原因
`QIODevice::bytesAvailable()`函数返回已经可以读取的字节数,如果返回值为0,可能有以下几种原因:
1. 数据还没有到达。如果你在一个`QIODevice`对象上调用`bytesAvailable()`函数,但是数据还没有到达,那么函数会返回0。
2. 数据已经读取完毕。如果你读取了所有可读字节数,那么后续的`bytesAvailable()`函数调用会返回0。
3. `QIODevice`对象没有打开。如果你在一个没有打开的`QIODevice`对象上调用`bytesAvailable()`函数,那么函数会返回0。
4. `QIODevice`对象处于不可读状态。如果你在一个不可读的`QIODevice`对象上调用`bytesAvailable()`函数,那么函数会返回0。
你需要检查以上几种情况,才能确定为什么`bytesAvailable()`函数返回0。
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)