Login | Register   
RSS Feed
Download our iPhone app
Browse DevX
Sign up for e-mail newsletters from DevX

By submitting your information, you agree that devx.com may send you DevX offers via email, phone and text message, as well as email offers about other products and services that DevX believes may be of interest to you. DevX will process your information in accordance with the Quinstreet Privacy Policy.

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