zoukankan      html  css  js  c++  java
  • 第三张 标准库类型(using,string,vector)

    第三张  标准库类型(usingstringvector

    一、命名空间的using声明

    1、使用using声明,我们就可以直接引用名字,而不需要再引用该名字的命名空间:(参考下面部分代码)

    #include <string>

    #include <iostream>

    using std::cin;

    using std::string ;

    int main()

    {

    string s; 正确,原来std::string,现在改成string

    cin >> s; 正确

    cout << s; 有错,因为上面没有using std::cout

    std:: cout << s; 正确

    需要注意的是,每个名字都要一个using声明。此外,在一种情况下,必须总是使用完全限定的标准库名字,即在头文件中。(会引起不必要的错误)

    二、标准库string类型

    1string标准库支持几个构造函数:

    String s1; 默认构造函数,s1为空串

    String s2(s1); s2初始化为s1的一个副本

    String s3("Value") ; s3初始化为一个字符串字面值副本

    String s4(n,'c'); s4初始化为字符‘c’的n个副本

    2string 对象的读写

    string s

       Cin >> s;   string类型的输入操作符:读取并忽略开头所有的空白字符(空格,换行符,制表符); 读取字符直到再次遇到空白字符,才终止读取。如:输入“hello world”,输出 “hello”,且不含任何空格。

    3、用getline 读取整行文本

    Getline接受两个参数,getlinecinline); 函数从输入流的下一行读取,并保存读取的内容到string中,但不包括换行符。另外,getline并不忽略行开头的换行符,只要getline遇到换行符,即便是第一个字符,也将停止输入并返回。如果第一个字符是换行符,则line为空串。

    4string对象的操作

    假设 string s

    S.empty()  如果s为空串,则返回true,否则返回false

    S.size()    返回s中字符的个数

    S[n]       返回s中位置为n的字符,从0开始计数。

    S1+s2 把两个串连接成一个新字符串,并返回。

    S1=s2 s1内容替换为s2的副本

    S1==s2 比较s1,s2的内容,相等则返回true,否则返回false

    !=, < , <= , > , >=  C语言类似.

    注意:(1s.size()返回的是string::std::size_type类型的值,特别的,不能将这个值赋给一个int 变量!

    2)连接字符串字面值时候,操作符的左右操作数必须至少有一个是string类型的。

    例如: string s3= s1+ " , " ;           string s5=s1+" , "+ "world" ; s5中,先是将s1" , " 相加组成一个新的string对象,然后再与"world " 相加。

    错误示范: string  s4= "hello " + " , " ; 两个字符串字面值相加是非法的。

    String   s6= "hello " +  " , " + s2;  

    (3)在string对象的索引变量最好也是用string::size_type类型,因为方便比较:  ix != s.size()  (越界控制)

    (4)String对象中字符的处理,见C++Primer P77

    三、标准库vector 类型

    1vector是同一类型的对象的集合,每个对象都有一个对应的整数索引值。常称vector为容器,它包含的对象都必须是同一类型的。(假设 用using做出了相应声明: #include<vector>

     Using std:: vector ;

    2、定义vector的对象:需要指定类型和一个变量的列表。

    如:vector<int>  ivec;

    3vector对象的定义和初始化

    四个构造函数:

    1vector<T>  v1; 类型为T的对象v1为空

    (2)  vector<T>  v2(v1);  v2v1的一个副本

    (3)  vector<T>  v3(n,i); v3包含n个值为i的元素

    (4)  vector<T>  v4(n); v4含有值初始化的元素的n个副本

    4vector对象的操作

      v.empty()   如果v为空,则返回true,否则返回false

    v.size()     返回v中元素的个数

    v.push_back(t) v的末尾增加一个值为t的元素

    v[n]        返回v中位置为n的元素,从0开始计数。

    v1=v2 把v1元素替换为v2中元素的副本

    v1==v2 如果v1,v2相等则返回true,否则返回false

    !=, < , <= , > , >=  C语言类似.

    注意:使用size_type类型时,必须指出该类型时在哪里定义的。Vector类型总是包括vector的元素类型: vector<int> :: size_type 

    5、下标操作不能添加元素

    因为下标只能用于获取已存在的元素,而当一个空对象没有元素时,是无法通过下标操作获取元素的。已存在的元素才能用下标操作进行索引,而通过下标操作赋值时,不会添加任何元素。

    -------------------------------------------------------------------------------------------------------------------------------------------------------------

    今天学习了const,typedef,枚举和现在贴上来的标准库string类型和vector类型,以及using命名声明。重点是现在贴上来的笔记了,感觉在看书过程中思路还算清晰吧,遇到一个小问题,问师兄和百度后最终解决了,就是using在头文件的使用,在上面的笔记也有记录。 今晚师兄跟我聊了一下vector类型,他告诉我,如果在学完这章书后能够用vector实现一个栈,那就算是真正学懂了!这也算学完这章书的一个小目标吧,今天写在这里,我会在学完这章后写一个出来的,到时候再贴上!加油!          23:00

  • 相关阅读:
    java.net.ConnectException: localhost/127.0.0.1:8088 Connection refused java程序员
    网络模式:GSM,WCDMA,CDMA2000什么意思 java程序员
    Spring contextConfigLocation java程序员
    src总结 java程序员
    广州天河软件园面试Java实习生时的一些面试题 java程序员
    纠结了好久的Android SDK无法更新问题 java程序员
    Android SDK 2.3/3.0/4.0/4.1 下载与安装教程 java程序员
    域名解析文件hosts文件是什么?如何修改hosts文件? java程序员
    安卓模拟器Android SDK 4.0.3 R2安装完整图文教程 java程序员
    SpringBoot+mongoDB实现id自增
  • 原文地址:https://www.cnblogs.com/ss815367696/p/2585459.html
Copyright © 2011-2022 走看看