zoukankan      html  css  js  c++  java
  • C++Prime4 之标准库类型

    一. 命名空间

    命名空间的using声明,可以在需要加前缀namespace::的情况下,访问命名空间中的名字。

    常用的using namespace std; C++中引入命名空间,主要是为了防止名字冲突,方便管理。

    二. 标准库string类型

    1.string类型支持长度可变的字符串,C++标准库将负责管理与存储字符相关的内存,以及各种常用操作。

    (1)判断字符串空 s.empty();

    (2)返回字符个数s.size(),类型是size_type是一个unsigned类型,不要把size返回值赋值给一个int

    (3)支持+重载,但是注意第一个必须是string对象,而不能是字符串常量。

    (4)字符常用函数,在cctype头文件中定义,比如isalpha(),isdigit(),tolower(),toupper(),isprint()等等

    (5)支持下标操作访问

    #include <iostream>
    #include <string>
    using namespace std;
    int main()
    {
    string s;
    cin>>s;  //读取并忽略开头所有空白字符,读取到空白字符停止
    cout<<s<<endl;
    for(string::size_type index = 0; index != s.size(); ++index)
    if(isalpha(s[index]))
      cout<<s[index];
    return 0;
    
    }
    2.getline读取整行文本
    string line;
    while(getline(cin,line))// 直到文本末尾
        cout<<line<<endl;

    在读取整行,还可以gets(char *s)函数;

    3.string类赋值,实现会遇到效率上问题,如string st1,str2=”hello world ”; str1 = str2; 赋值必须要先把str1的内存释放掉,然后申请str1足够的内存放置str2的副本。

    4.C++和C头文件一点规则,C标准库文件命名形式是name.h ,而C++版本则命名为cname,少了后缀.h,而在前面加c,表示这个头文件来自C标准库。

    三.标准库vector类型

    需包含头文件#include <vector>

    1.vector容器,一个容器中的所有对象都必须是同一种类型,对象动态增长。

    2.常用操作 v.empty(); v.size(); v.push_back(); 同样支持下标访问操作;

    for(vector<int> ::size_type ix =0; ix != ivec.size(); i++x) //在循环中计算好处,是当有增加元素时候,也能正常
        ivec[ix] = 0;
    四.迭代器介绍
    包含头文件#include<iterator>
    1.如vector<int>::iterator iter = ivec.begin();
    ivec.end()指向末端元素的下一个,表明指向了一个不存在的元素,因此不能对end()解引用。迭代器解引用,*iter =0 和iter[0]一样;下面用迭代器来编写循环
    for(vector<int>:: iterator iter = ivec.begin() ;iter !=ivec.end(); ++iter)
        *iter = 0;

    2. const_iterator的类型,该类型只能用于读取容器内容,但不能修改值。

    3.区别const_iterator 和const iterator,后者指向const的迭代器,必须初始化就赋值,一旦初始化,就不能改变迭代器值,因此这类迭代器几乎是没什么用处的。

    4.迭代器也可以计算操作,移位等等

    五.标准库bitset类型

    主要用于处理二进制位的。可以用下标访问

    1.初始化:

    bitset<n> b; //b有n位,每位都是0  
    
    string s("1100");
    
     bitset<n> b(s) //用string对象初始化
    
    bitset<32>bitvec32(oxffff);
    
    cout<<"bitvec32: "<<bitvec32<<endl;

    2.常用操作

    b.any(); //b中是否存在置1的二进制

    b.none();//b中不存在置1的

    b.count();//b中是置1的二进制个数

    b.size();

    b[pos];

    b.set();

    b.set(pos);

    b.reset();

    b.flip();

    b.flip(pos);等等

  • 相关阅读:
    centos7最小化安装无法tab补全
    rhcsa备战笔记
    idea springboot应用启动
    idea 导入Mapper错误报错设置
    idea 忽略显示文件
    maven 插件jetty/tomcat启动 web 应用
    maven jstl、jsp、servlet依赖
    maven 项目目录图与web 应用结构图对比
    maven 远程仓库、私服及镜像配置
    maven windows环境nexus3.0私服搭建
  • 原文地址:https://www.cnblogs.com/cheng07045406/p/3138039.html
Copyright © 2011-2022 走看看