Browse DevX
Sign up for e-mail newsletters from DevX

Tip of the Day
Language: C++
Expertise: Advanced
Feb 9, 2000



Building the Right Environment to Support AI, Machine Learning and Deep Learning

The Possible Deprecation of vector<bool> and Its Consequences

In the early days of STL, C++ creators decided to include a specialized form of the vector container class, namely vector < 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 <bool> is problematic in many respects. Furthermore, it contradicts some of the basic requirements with which STL containers must comply. The problem is that vector <bool> elements are bits. Yet a bit is not an addressable type—you 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 <bool> properly because they rely on references and pointers. Worse yet, on most implementations, vector <bool> 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 <bool>. Therefore, it's advisable to avoid using vector <bool> altogether. If you need a vector of Boolean values, you can use vector <char> instead.
Danny Kalev
Comment and Contribute






(Maximum characters: 1200). You have 1200 characters left.



Thanks for your registration, follow us on our social networks to keep up-to-date