我正在尝试删除对象向量中的元素。向量充满了实例,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 );
}
}
我希望这个问题很清楚。提前致谢。
编辑:我想通了,感谢所有回答的人。诀窍是给类一些唯一的东西来标识它(如名称或标签,只要它们保证是唯一的),然后使用擦除删除习语从数组中删除对象。