devxlogo

The Possible Deprecation of vector&ltbool> and Its Consequences

The Possible Deprecation of vector&ltbool> and Its Consequences

In the early days of STL, C++ creators decided to include a specialized form of the vector container class, namely vector &lt bool >. In this specialized vector, bits serve as the container’s elements. This decision was plausible and seemed useful at that time. However, the experience gained in recent years shows that vector &ltbool> is problematic in many respects. Furthermore, it contradicts some of the basic requirements with which STL containers must comply. The problem is that vector &ltbool> elements are bits. Yet a bit is not an addressable type&#151you can’t define a pointer or a reference to a bit nor can you allocate single bits using operator new. Thus, algorithms and iterators can’t cope with vector &ltbool> properly because they rely on references and pointers. Worse yet, on most implementations, vector &ltbool> is significantly slower than any other type of vector. The C++ standardization committee is now aware of these difficulties. Chances are good that future versions of the C++ Standard will deprecate vector &ltbool>. Therefore, it’s advisable to avoid using vector &ltbool> altogether. If you need a vector of Boolean values, you can use vector &ltchar> instead.

devx-admin

Share the Post: