c++11 标准模板(STL)(std::bitset)(三)

这篇具有很好参考价值的文章主要介绍了c++11 标准模板(STL)(std::bitset)(三)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

定义于头文件 <bitset>

template< std::size_t N >
class bitset;

 类模板 bitset 表示一个 N 位的固定大小序列。可以用标准逻辑运算符操作位集,并将它与字符串和整数相互转换。

bitset 满足可复制构造 (CopyConstructible) 及可复制赋值 (CopyAssignable) 的要求。

模板形参

N - 要为 bitset 分配存储的位数

成员类型

reference

表示到一个位的引用的代理类
(类)

元素访问

访问指定的位

std::bitset<N>::operator[]

bool operator[]( std::size_t pos ) const;

(1) (C++11 前)

constexpr bool operator[]( std::size_t pos ) const;

(C++11 起)

reference operator[]( std::size_t pos );

(2)

 访问位于位置 pos 的位。首版本返回位的值,第二版本返回允许修改位的值的 std::bitset::reference 对象。

不同于 test() ,它不抛异常:若 pos 在边界外则行为未定义。

参数

pos - 要返回的位的位置

返回值

1) 请求位的值

2) std::bitset::reference 类型对象,允许写入请求位。

异常

(无)

访问特定位

std::bitset<N>::test

bool test( size_t pos ) const;

 返回位于位置 pos 的位的值。

不同于 operator[] ,它进行边界检查,且若 pos 不对应 bitset 中的合法位置则抛出 std::out_of_range 。

参数

pos - 要返回的位的位置

返回值

若所求位被设置则为 true ,否则为 false 。

异常

pos 不对应 bitset 中的合法位置则抛出 std::out_of_range 。

检查是否所有、任一或无位被设为 true

std::bitset<N>::all, 
std::bitset<N>::any, 
std::bitset<N>::none

bool all() const noexcept;

(1) (C++11 起)

bool any() const;

(2) (C++11 前)

bool any() const noexcept;

(C++11 起)

bool none() const;

(3) (C++11 前)

bool none() const noexcept;

(C++11 起)

 检查是否全部、任一或无位被设为 true 。

1) 检查是否全部位被设为 true 。

2) 检查是否任一位被设为 true 。

3) 检查是否无位被设为 true 。

参数

(无)

返回值

1) 若全部位被设为 true 则为 true ,否则为 false

2) 若任何一位被设为 true 则为 true ,否则为 false

3) 若无位被设为 true 则为 true ,否则为 false

返回设置为true的位的数量

std::bitset<N>::count

std::size_t count() const;

(C++11 前)

std::size_t count() const noexcept;

(C++11 起)

返回设为 true 的位数。

参数

(无)

返回值

设为 true 的位数。

调用示例

#include <iostream>
#include <bitset>
#include <string>

template<size_t _Nb>
void printBitset(const std::string &name, const std::bitset<_Nb> &bitset)
{
    std::cout << name << ":  ";
    for (size_t index = 0; index < bitset.size(); index++)
    {
        std::cout << bitset[index] << " ";
    }
    std::cout << std::endl;
}

int main()
{
    std::cout << std::boolalpha;

    std::string bit_string = "110010";
    std::bitset<8> bitset1(bit_string);       // [0,0,1,1,0,0,1,0]
    std::cout << "bitset1:  " << bitset1 << std::endl;
    for (size_t index = 0; index < bitset1.size(); index++)
    {
        //访问位于位置 pos 的位。首版本返回位的值,
        //第二版本返回允许修改位的值的 std::bitset::reference 对象。
        //不同于 test() ,它不抛异常:若 pos 在边界外则行为未定义。
        bitset1[index] = ~bitset1[index];
    }
    std::cout << "bitset1:  " << bitset1 << std::endl;
    printBitset("bitset1", bitset1);
    std::cout << std::endl;


    std::bitset<8> bitset2(bit_string);       // [0,0,1,1,0,0,1,0]
    std::cout << "bitset2:  " << bitset2 << std::endl;
    std::cout << "bitset2:  " ;
    for (size_t index = 0; index < bitset1.size(); index++)
    {
        //返回位于位置 pos 的位的值。
        //不同于 operator[] ,它进行边界检查,
        //且若 pos 不对应 bitset 中的合法位置则抛出 std::out_of_range 。
        std::cout << bitset2.test(index) << " ";
    }
    std::cout << std::endl;
    std::cout << std::endl;

    std::bitset<6> bitset3("111111");
    std::bitset<6> bitset4("010101");
    std::bitset<6> bitset5("000000");
    //1) 检查是否全部位被设为 true 。
    std::cout << bitset3 << " --- " << "bool all() const noexcept:   "
              << bitset3.all() << std::endl;
    std::cout << bitset4 << " --- " << "bool all() const noexcept:   "
              << bitset4.all() << std::endl;
    std::cout << bitset5 << " --- " << "bool all() const noexcept:   "
              << bitset5.all() << std::endl;
    //2) 检查是否任一位被设为 true 。
    std::cout << bitset3 << " --- " << "bool any() const noexcept:   "
              << bitset3.any() << std::endl;
    std::cout << bitset4 << " --- " << "bool any() const noexcept:   "
              << bitset4.any() << std::endl;
    std::cout << bitset5 << " --- " << "bool any() const noexcept:   "
              << bitset5.any() << std::endl;
    //3) 检查是否无位被设为 true 。
    std::cout << bitset3 << " --- " << "bool none() const noexcept:  "
              << bitset3.none() << std::endl;
    std::cout << bitset4 << " --- " << "bool none() const noexcept:  "
              << bitset4.none() << std::endl;
    std::cout << bitset5 << " --- " << "bool none() const noexcept:  "
              << bitset5.none() << std::endl;
    std::cout << std::endl;

    //返回设为 true 的位数。
    std::cout << bitset3 << " --- " << "bool count() const noexcept: "
              << bitset3.count() << std::endl;
    std::cout << bitset4 << " --- " << "bool count() const noexcept: "
              << bitset4.count() << std::endl;
    std::cout << bitset5 << " --- " << "bool count() const noexcept: "
              << bitset5.count() << std::endl;

    return 0;
}

输出

c++11 标准模板(STL)(std::bitset)(三)

 文章来源地址https://www.toymoban.com/news/detail-476824.html

到了这里,关于c++11 标准模板(STL)(std::bitset)(三)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • c++11 标准模板(STL)(std::basic_ifstream)(一)

    定义于头文件  fstream template     class CharT,     class Traits = std::char_traitsCharT class basic_ifstream : public std::basic_istreamCharT, Traits 类模板 basic_ifstream 实现文件流上的高层输入操作。它将 std::basic_istream 的高层接口赋予基于文件的流缓冲( std::basic_filebuf )。 std::basic_ifstream 的典型实

    2024年02月14日
    浏览(34)
  • c++11 标准模板(STL)(std::unordered_multimap)(九)

    template     class Key,     class T,     class Hash = std::hashKey,     class KeyEqual = std::equal_toKey,     class Allocator = std::allocator std::pairconst Key, T class unordered_multimap; (1) (C++11 起) namespace pmr {     template class Key, class T,               class Hash = std::hashKey,               class Pred = std::equa

    2023年04月09日
    浏览(39)
  • c++11 标准模板(STL)(std::basic_stringstream)(四)

    template     class CharT,     class Traits = std::char_traitsCharT class basic_stringstream; (C++11 前) template     class CharT,     class Traits = std::char_traitsCharT,     class Allocator = std::allocatorCharT class basic_stringstream; (C++11 起) 类模板 std::basic_stringstream 实现基于字符串的流上的输入与输出操作。它等效

    2024年02月10日
    浏览(36)
  • c++11 标准模板(STL)(std::basic_istream)(三)

    template     class CharT,     class Traits = std::char_traitsCharT class basic_istream : virtual public std::basic_iosCharT, Traits  类模板 basic_istream 提供字符流上的高层输入支持。受支持操作包含带格式的输入(例如整数值或空白符分隔的字符与字符串)和无格式输入(例如未处理字符和字符数组)

    2024年02月13日
    浏览(39)
  • c++11 标准模板(STL)(std::basic_stringstream)(一)

    template     class CharT,     class Traits = std::char_traitsCharT class basic_stringstream; (C++11 前) template     class CharT,     class Traits = std::char_traitsCharT,     class Allocator = std::allocatorCharT class basic_stringstream; (C++11 起) 类模板 std::basic_stringstream 实现基于字符串的流上的输入与输出操作。它等效

    2024年02月10日
    浏览(39)
  • c++11 标准模板(STL)(std::basic_istream)(一)

    template     class CharT,     class Traits = std::char_traitsCharT class basic_istream : virtual public std::basic_iosCharT, Traits 类模板 basic_istream 提供字符流上的高层输入支持。受支持操作包含带格式的输入(例如整数值或空白符分隔的字符与字符串)和无格式输入(例如未处理字符和字符数组)。

    2024年02月13日
    浏览(31)
  • c++11 标准模板(STL)(std::priority_queue)(四)

    template     class T,     class Container = std::vectorT,     class Compare = std::lesstypename Container::value_type class priority_queue; priority_queue 是容器适配器,它提供常数时间的(默认)最大元素查找,对数代价的插入与释出。 可用用户提供的 Compare 更改顺序,例如,用 std::greaterT 将导致最小元

    2024年02月01日
    浏览(45)
  • c++标准模板(STL)(std::array)(三)

    template     class T,     std::size_t N struct array; (C++11 起   std::array 是封装固定大小数组的容器。 此容器是一个聚合类型,其语义等同于保有一个 C 风格数组 T[N] 作为其唯一非静态数据成员的结构体。不同于 C 风格数组,它不会自动退化成 T* 。它能作为聚合类型聚合初始化,只要

    2024年02月02日
    浏览(48)
  • 0829|C++day7 auto、lambda、C++数据类型转换、C++标准模板库(STL)、list、文件操作

        封装一个学生的类,定义一个学生这样类的vector容器, 里面存放学生对象(至少3个) 再把该容器中的对象,保存到文件中。 再把这些学生从文件中读取出来,放入另一个容器中并且遍历输出该容器里的学生。

    2024年02月10日
    浏览(46)
  • 标准模板库STL——迭代器

    目录 四类迭代器概述 代码段 普通正向迭代器 普通反向迭代器 常量正向迭代器 常量反向迭代器 四类迭代器 普通正向迭代器 iterator 常量正向迭代器 const_iterator 普通反向迭代器 reverse_iterator 常量反向迭代器 const_reverse_iterator 解释说明 普通表示可以读元素,也可以写元素; 常量

    2024年02月12日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包