我想刪除對象矢量中的元素。該向量填充了Object
的實例,並且在某些時候,我想要刪除矢量中的某個元素,而不是索引,但是由元素本身刪除。刪除矢量中的對象
一個簡單的例子是:
std::vector<string> strVector;
strVector.push_back("abc");
strVector.push_back("def");
strVector.push_back("ghi"); // So strVector should contain "abc", "def", and "ghi"
如何從載體中刪除 「GHI」?請注意,我不知道該矢量中的「ghi」在哪裏。
// Something like this. Assume strVector = [ "abc", "cba", "ccb", "bac", "aaa" ]
strVector.removeElement("ccb");
更相關的例子,我一個工作:
class MyClass {
std::vector<Object> myObjVector;
void main(ARGS) {
for (int i = 0; i < 10; i++) {
Object myObject = Object();
myObjVector.push_back(myObject);
}
int j = getANumber(); // j could be any number within the size of the vector
Object myOtherObject = myObjectVector.at(j);
// How do I erase myOtherObject (which is an object inside the vector) ?
removeFromVector(myOtherObject);
}
}
我希望這個問題的明確。提前致謝。
編輯:我想通了,謝謝所有回答。訣竅是給這個類賦予唯一的標識它的東西(比如名字或標籤,只要它們保證是唯一的),然後使用erase-remove idiom從數組中刪除對象。
你有矢量內的重複嗎? – 2012-08-02 08:37:11
不,我不知道。在創建Object的實例後,我立即將它推入向量中,這意味着向量的所有元素都是新創建的元素。 – alxcyl 2012-08-02 08:40:54
檢查一些[文檔](http://en.cppreference。com/w/cpp/container/vector),它應該幫助找到例如['erase'](http://en.cppreference.com/w/cpp/container/vector/erase)函數。 – 2012-08-02 08:41:45