在C ++ 11之前,我认为std::vector<T>
需要T
为CopyAssignable而CopyConstructible用于基本操作(扩展容量需要将对象复制到另一个内存位置)。但是如果你做v1 = v0
,我认为它实际上会复制值。
是否有任何标准容器不需要任何功能value_type
可分配和复制?
换句话说,我有一个不可复制/可分配的类型,哪些容器可以安全地使用以及在多大程度上使用?
答案 0 :(得分:1)
对元素施加的要求取决于对容器执行的实际操作。通常,要求元素类型是完整类型并满足Erasable的要求,但许多成员函数强加了更严格的要求。
值得注意的是FirebaseDatabase database = FirebaseDatabase.getInstance();
database.setPersistenceEnabled(true);
DatabaseReference myRef = database.getReference();
final Activity context = this;
// Read from the database
myRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
GenericTypeIndicator<List<University>> genericTypeIndicator = new GenericTypeIndicator<List<University>>() {};
colleges = dataSnapshot.getValue(genericTypeIndicator);
List<String> names = new ArrayList<String>();
for (University college : colleges){
names.add(college.name);
}
if (colleges.size() > 0) {
CustomList customList = new CustomList(context, colleges, names);
listView.setAdapter(customList);
setListeners();
}
}
@Override
public void onCancelled(DatabaseError error) {
// Failed to read value
Log.w(TAG, "Failed to read value.", error.toException());
}
});
(对于某些完整的T)是非CopyAssignable /非CopyConstructible容器。