Qt/C++工作筆記-對vector與QVector中erase操作的進一步認識(區別與聯絡)
阿新 • • 發佈:2019-01-06
VS程式碼如下:
#include <iostream> #include <vector> using namespace std; void main(){ vector<int> intVec; for (int i = 0; i < 10;i++){ intVec.push_back(i); } vector<int>::iterator iter; for (iter = intVec.begin(); iter != intVec.end(); iter++){ if ((*iter) == 5){ intVec.erase(iter); break; } } getchar(); }
從區域性變數框圖中可以得到:
使用erase後,不僅僅會把要刪除的數刪除,還會把陣列前移,這是十分令人happy的事情。
不過他的大小,也就是size是不會變的。(這裡注意了,QVector中有append,這個會和傳統的vector不同)
下面是QVector,他和vector一個吊樣
Qt的程式碼如下:
#include <QApplication> #include <QVector> int main(int argc, char *argv[]) { QApplication a(argc, argv); QVector<int> intVec; for(int i=0;i<10;i++) intVec.append(i); QVector<int>::iterator iter; for(iter=intVec.begin();iter!=intVec.end();iter++){ if((*iter)==5){ intVec.erase(iter); break; } } return a.exec(); }
也看下區域性變數
這裡可以看到,大部分地方都一樣,不一樣的就是Qt中有append操作。
這個操作很有意思,當erase後,這個QVector的大學會變小,你沒有看錯,真的變小了。
這是更令人happy的事情