Login | Register   
LinkedIn
Google+
Twitter
RSS Feed
Download our iPhone app
TODAY'S HEADLINES  |   ARTICLE ARCHIVE  |   FORUMS  |   TIP BANK
Browse DevX
Sign up for e-mail newsletters from DevX


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

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.

 

 

Sitemap