c++ - How do you use the extraction operator (>>) with vector<bool>? -


in example vector<int> somevector , istringstream somestringstream can this:

for (int i=0; < somevector.size(); i++) {   somestringstream >> somevector[i]; } 

i know vector<bool> efficient implementation, , operator[] returns reference object. code should using index rather iterator, readability. currently, i'm using this:

for (int i=0; < somevector.size(); i++) {   bool temp;   somestringstream >> temp;   somevector[i] = temp; } 

is there more direct way of implementing this?

you use std::copy or std::vector range constructor if want consume whole stream:

std::stringstream ss("1 0 1 0"); std::vector<bool> vec; std::copy(std::istream_iterator<bool>(ss), {}, std::back_inserter(vec)); 

live demo

std::stringstream ss("1 0 1 0"); std::vector<bool> vec(std::istream_iterator<bool>(ss), {}); 

live demo

now looking @ examples posted , if you're sure std::vectors size proper use std::generate example below:

std::stringstream ss("1 0 1 0"); std::vector<bool> vec(4); std::generate(std::begin(vec), std::end(vec), [&ss](){ bool val; ss >> val; return val;}); 

live demo


Comments

Popular posts from this blog

Magento/PHP - Get phones on all members in a customer group -

php - .htaccess mod_rewrite for dynamic url which has domain names -

Website Login Issue developed in magento -