|
|
1
8
|
|
|
2
4
使用
|
|
|
3
1
如果你想通过向量线性搜索,那么
如果您有一个谓词,并且要删除与该谓词匹配的所有项,则:
这些方法都不是最有效的方法,因为它们需要线性查找,而且即使您的元素很早就找到了,擦除也很昂贵,因为它必须将所有其他元素移动一个位置以保持它们连续。 使用std::list可以解决后一个问题:搜索是线性的,而擦除是恒定的时间。 如果可以将元素存储在使用键查找的关联容器中,则效率会更高:O(log N)查找和常数时间删除。 哈希映射可能更好,接近于常量时间查找和删除。
对于您的建议,即通过对象指针擦除,您可以使用std::set作为类型T
您可以使用std::set,SharedPtrLess> 其中定义SharedPtrLess如下:
|