1. 程式人生 > 實用技巧 >std::vector<bool> 的要點

std::vector<bool> 的要點

#include <iostream>
#include <vector>
#include <memory.h>
#include <stdio.h>

int main() {
    int size_v = 10;
    std::vector<int> tmp(5, 0);
    int * tmp_pt = tmp.data();
    memset(tmp_pt, 0, 5 * 4);
    std::vector<int> myvector(5);
    int* p = myvector.data();

    std::vector<bool> b_vec(5,true);
    for(auto t : b_vec) {
        std::cout<<std::boolalpha <<t<<std::endl;
    }

    for (auto b : b_vec) {
          b = false;
    }
    for (auto const & b : b_vec)
    {
          std::cout << std::boolalpha << b << std::endl;
    }
    
    std::vector<int> int_vec(5,0);
    for(auto & t : int_vec) {
        std::cout<<t<<'\t';
    }
    std::cout<<std::endl;

    for (auto &t : int_vec) {
          t = 1;
    }
    for (auto const & t : int_vec) {
          std::cout<< t<<'\t';
          
    }
    std::cout<< std::endl;
    return 0;
}

如程式碼所示,非引用的遍歷bool vector也會改變其值,在使用auto的情況下,必須顯式的進行型別轉換,使用bool來避免.