是否可以使用大小为-1的ArrayList?或者至少有一些标志设置为小于0的数字/无效我可以用来检测条件?
答案 0 :(得分:2)
本着回答问题的精神,提供的ArrayList
类的大小是非负的,但是,正如一些评论所暗示的那样,您可以覆盖size()
方法中的ArrayList
方法。 public class MyArrayList<T> extends ArrayList<T> {
@Override
public int size() {
if (somecondition) {
return -1;
}
return super.size();
}
}
类,让它返回你想要的东西。
List
然而,应该注意的是,对于实现ArrayList
接口的类的重写方法存在严重影响,其中这些类的某些用户期望这些方法的声音实现,并添加其他功能可以打破那份合同。检测std::vector<std::unique_ptr<int>> v;
auto it = std::find(v.begin(), v.end(), [=](std::unique_ptr<int>& p){
return p.get() == ptr; // or *p == *ptr
});
if (it != v.end()) {
std::unique_ptr<int> u = std::move(*it);
v.erase(it);
// do something with u
}
外部的情况并使用它可能是一个更好的主意,因为它可能有更好的方法来完成您描述的内容。