如何获取 vector 中元素的位置,其中元素是类。有办法做到这一点吗?
示例代码:
class Object
{
public:
void Destroy()
{
// run some code to get remove self from vector
}
}
在 main.cpp 中:
std::vector<Object> objects;
objects.push_back( <some instances of Object> );
// Some more code pushing back some more stuff
int n = 20;
objects.at(n).Destroy(); // Assuming I pushed back 20 items or more
所以我想我希望能够编写一个方法或类的成员,它将返回 vector 中自身的位置...这可能吗?
编辑:
由于困惑,我应该解释得更好。
void Destroy(std::vector<Object>& container){
container.erase( ?...? );
}
问题是,我怎样才能找到要删除的号码...?显然这是不可能的...我认为它可能不会...
最佳答案
您可以使用 std::find
在 vector
中查找元素(假设您为 实现了比较运算符 (
。但是,有两个大问题:==
) >对象
- 如果您需要在容器中查找元素,那么使用有序容器(例如
std::map
或std::set
会获得更好的性能(在O(log(N))
与O(N)
中查找操作
Object
不应该是负责将其自身从容器中移除的对象。Object
不应该知道或关心它在哪里,因为这会破坏封装。相反,容器的所有者应该关注这些任务。
关于c++ - 获取元素在 std::vector 中的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14945822/