問題:如何通過下標(biāo)連續(xù)刪除vector中的元素
??? 這個問題我覺得狠簡單,并未多想,但實際寫到用的時候,發(fā)現(xiàn)很煩~
??? 例如: std::vector
??? 當(dāng)然簡單遍歷方式是可以的,只是代碼寫起來比較難看,難免不了循環(huán)和break。
??? 不知各位有啥方法嗎?
posted on 2009-10-20 20:15 codejie 閱讀(2784) 評論(9) 編輯 收藏 引用 所屬分類: C++ 、隨筆而已
Using C++
posted on 2009-10-20 20:15 codejie 閱讀(2784) 評論(9) 編輯 收藏 引用 所屬分類: C++ 、隨筆而已
暈……
v.erase(v.begin()+1);
回復(fù) 更多評論
vct.begin() + 1....還真不知道iterater可以+1... 回復(fù) 更多評論
Data::TBoxVector::iterator it = m_vct.begin() + start;
size_t count = 0;
while(it != m_vct.end() && count < size)
{
m_vct.erase(it);
it = m_vct.begin() + start;
++ count;
}
我一直以為對于STL容器的iterator只能使用++和--,而不能類似指針一樣進(jìn)行指定跨度訪問。
總是被習(xí)慣所騙,感覺自己很土~
謝謝OwnWaterloo一語驚醒夢中人~ 回復(fù) 更多評論
@codejie
STL有輸入、輸出、前向、雙向、隨機(jī),5種迭代器。
erase有范圍刪除:
first = v.begin()+start;
v.erase( first, first+min(size,v.size()-start) );
回復(fù) 更多評論
@OwnWaterloo
收到,謝謝。 回復(fù) 更多評論
@Liu
嗯,每天學(xué)習(xí)!
這個iterator的問題應(yīng)該是咱們當(dāng)年‘STL的容器可以相互替換’概念導(dǎo)致的,為了保證訪問容器的方法跟容器本身無關(guān),都使用統(tǒng)一的iterator操作,實際忘記了STL容器還分順序容器和隨機(jī)容器,而它們之間的iterator有著各自的特性的... 回復(fù) 更多評論
來不及細(xì)看了,正在編譯ORTP頭痛死了...。不過STL容器的元素刪除要很小心,有很多微妙的地方要注意,以前看Cpp reference wiki上的示例代碼的時候總覺得怎么那么啰嗦,等后來自己犯錯誤了才知道,必須要那么去做。 回復(fù) 更多評論
@白云深
ORTP么用過,記得那時做IM程序時,用的好像是JRTP、JVOIP一套~很久沒有接觸RTP東東了~ 回復(fù) 更多評論
| 只有注冊用戶登錄后才能發(fā)表評論。 | ||
|
||
|
相關(guān)文章:
|
||
網(wǎng)站導(dǎo)航:
博客園
IT新聞
BlogJava
博問
Chat2DB
管理
|
||
|
|