什么是不需要CopyAssignable / CopyConstructible的标准容器?

时间:2017-06-06 18:28:48

标签: c++11 containers

在C ++ 11之前,我认为std::vector<T>需要T为CopyAssignable而CopyConstructible用于基本操作(扩展容量需要将对象复制到另一个内存位置)。但是如果你做v1 = v0,我认为它实际上会复制值。

是否有任何标准容器不需要任何功能value_type可分配和复制?

换句话说,我有一个不可复制/可分配的类型,哪些容器可以安全地使用以及在多大程度上使用?

1 个答案:

答案 0 :(得分:1)

来自cppreference.com

  

对元素施加的要求取决于对容器执行的实际操作。通常,要求元素类型是完整类型并满足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容器。