只見用來從std::vector
刪除一個選擇的元素下面的代碼:迭代器是否支持+運算符?
vector<hgCoord>::iterator it;
int iIndex = 0;
const int iSelected = 5;
for(it = vecPoints.begin(); it != vecPoints.end(); ++it, ++iIndex)
{
if(iIndex == iSelected)
{
vecPoints.erase(it);
break;
}
}
我認爲,這個代碼是沒有效率的,應該按如下方式寫入:
vector<hgCoord>::iterator it;
int iIndex = 0;
const int iSelected = 5; // we assume the vector has more than 5 elements.
vecPoints.erase(vecPoints.begin() + iSelected);
不過,我不是確定此代碼是否遵循C++ STL標準。
你是對的,因爲'std :: vector :: iterator'是一個'RandomAccessIterator'(又名'T *')。請記住,如果向量中的元素少於5個,則第二個算法將失敗。 –
2010-11-04 19:12:53
如果這些前綴''i'是匈牙利符號的一種形式,我強烈反對任何一段代碼。 – 2010-11-04 19:30:13
@ eq-:什麼,因爲'i'應該用作'iterator'的前綴,你的意思是;-p – 2010-11-04 19:54:13