相关疑难解决方法(0)

vector <bool>的替代方案

正如(希望)我们都知道的那样,vector<bool>完全被打破,不能被视为交流阵列.获得此功能的最佳方法是什么?到目前为止,我所想到的想法是:

  • 使用vector<char>替代,或
  • 使用包装类并拥有 vector<bool_wrapper>

你们怎么处理这个问题?我需要c_array()功能.

作为一个附带问题,如果我不需要c_array()方法,如果我需要随机访问,解决此问题的最佳方法是什么?我应该使用双端队列还是别的什么?

编辑:

  • 我确实需要动态调整大小.
  • 对于那些不知道的人来说,c_array()是专门的,所以每个bool需要1位.因此,您无法将其转换为C风格的数组.
  • 我猜"包装"有点用词不当.我在想这样的事情:

当然,由于可能的对齐问题,我必须读入my_bool :(

struct my_bool
{
    bool the_bool;
};
vector<my_bool> haha_i_tricked_you;
Run Code Online (Sandbox Code Playgroud)

c++ stl boolean vector

86
推荐指数
6
解决办法
4万
查看次数

为什么vector <bool> :: reference不会返回对bool的引用?

#include <vector>

struct A
{
    void foo(){}
};

template< typename T >
void callIfToggled( bool v1, bool &v2, T & t )
{
    if ( v1 != v2 )
    {
        v2 = v1;
        t.foo();
    }
}

int main()
{
    std::vector< bool > v= { false, true, false };

    const bool f = false;
    A a;

    callIfToggled( f, v[0], a );
    callIfToggled( f, v[1], a );
    callIfToggled( f, v[2], a );
}
Run Code Online (Sandbox Code Playgroud)

上面示例的编译会产生下一个错误:

dk2.cpp: In function 'int main()':
dk2.cpp:29:28: error: no …
Run Code Online (Sandbox Code Playgroud)

c++ compiler-errors g++

56
推荐指数
5
解决办法
1万
查看次数

标签 统计

c++ ×2

boolean ×1

compiler-errors ×1

g++ ×1

stl ×1

vector ×1