Don't use the standard containers by default.

Revert the change of wxUSE_STD_CONTAINERS to 1 by default as this introduces
more incompatibilities which risk hamper upgrading to 3.0 unnecessarily.

Update the documentation to better explain why do the non-standard container
classes exist in wxWidgets and, especially, that they shouldn't be used when
possible. Also document the differences between the normal and STL containers
build in the manual.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@67735 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin
2011-05-13 13:30:12 +00:00
parent c4264a8317
commit 7311debd0d
13 changed files with 193 additions and 177 deletions

View File

@@ -59,43 +59,6 @@ changes:
their overridden OnExecute() or override a more convenient OnExec() instead.
Use of STL containers by default
--------------------------------
wxWidgets uses STL containers for the implementation of wxVector, wxList,
wxDList and wxStack by default since 2.9.2 release. While the STL-based
versions are mostly compatible with the old ones, there are some differences:
- wxList::compatibility_iterator must be used instead of wxList::Node* when
iterating over the list contents. The compatibility_iterator class has the
same semantics as a Node pointer but it is an object and not a pointer, so
you need to write
for ( wxWindowList::compatibility_iterator it = list.GetFirst();
it;
it = it->GetNext() )
...
instead of the old
for ( wxWindowList::Node *n = list.GetFirst(); n; n = n->GetNext() )
...
- wxSortedArrayString and wxArrayString are separate classes now and the
former doesn't derive from the latter. If you need to convert a sorted array
to a normal one, you must copy all the elements. Alternatively, you may
avoid the use of wxSortedArrayString by using a normal array and calling its
Sort() method when needed.
- WX_DEFINE_ARRAY_INT(bool) cannot be used because of the differences in
std::vector<bool> specialization compared with the generic std::vector<>
class. Please either use std::vector<bool> directly or use an integer array
instead.
Finally notice that you may set wxUSE_STD_CONTAINERS to 0 when compiling
wxWidgets to use the non-STL containers.
wxODBC and contrib libraries removal
------------------------------------