オブジェクトのベクトル内の要素を削除しようとしています。ベクトルはのインスタンスで満たされ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 イディオムを使用して配列からオブジェクトを削除することでした。