如下,使用removeOne是否会导致空指针呢
#include<iostream>
#include "QVector"
#include "QDebug"
int main()
{
QVector<int> a{ 1,2,3,5,6 };
for (auto item : a)
{
a.removeOne(2);
}
for (auto item : a)
{
qDebug() << item;
}
std::cout <<"End" << std::endl;
system("pause");
}
答案是不会
在源码里找到原因如下
bool removeOne(const T &t)
{
const int i = indexOf(t);
if (i < 0)
return false;
remove(i);
return true;
}
int QVector<T>::indexOf(const T &t, int from) const
{
if (from < 0)
from = qMax(from + d->size, 0);
if (from < d->size) {
T* n = d->begin() + from - 1;
T* e = d->end();
while (++n != e)
if (*n == t)
return n - d->begin();
}
return -1;
}