3.1 Namespace using Declarations

1、因为C++里有名字空间的定义,例如我们使用cin的时候必须写成std::cin,如果就用一次还是可以接受的,但是如果一直都这样,那就很麻烦了。所以C++使用了一个姓的关键字using。

(1)第一种用法:

例如:using namespace std; 这样子的话就可以使用std名字空间下面所有的方法而不用加std::。

(2)第二种用法:

例如:using std::cin; 这样子的就只能cin前面不加std::,而其他的,如cout还是要加上名字空间的。

2、一般using方法不放在头文件里面,因为头文件可能被多个cpp文件引用,那cpp文件相应的也使用了using,但有时候我们会存在两个名字空间的方法名字是一样的,这时候就会出现问题。

3.2 Library string Type

**首先当然是头文件和名字空间的引用啦

#include <string>
using std::string;

1、初始化string的方法

(1)string s1;             创建一个空的字符串

(2)string s2(s1);       s2通过拷贝s1创建

(3)string s2 = s1;      同(2),

(4)string s3("value");        s3是通过拷贝一个字符串创建的,但没有包括'\0';

(5)string s4(n,'c');            创建一个n个c的string;

PS:通过‘=’创建的方法是间接创建的方法(重载‘=’),而()则是直接创建的方法(重载构造函数)。

2、string的操作

os<<s;

is>>s;                     不接受空格,开始有空格直接忽略,碰到空格直接停。

getline(is ,s);           将一行的输入读取,包括空格,直到遇到换行符

s.empty();               判断s是否为空

s.size();                  计算s的长度

s[n];                       返回一个在s第n位置的字符的引用。

s=s1+s2;                    将s2copy在s1的后面,然后给s;

s1=s2;                       赋值

s1==s2;

s1!=s2;

<,<=,>,>=

比较的规则:就是依据ASCII表进行比较,不再多说。

PS:(1)s.size();的返回值是一个新的类型size_type,具体是什么,由于代码是封闭的,无法得知,但是它是一个无符号的类型,而且可以存非常非常大的一个数字,记得不要认为返回值是int等等的。

(2)对于+,+=操作是,最左边一定是一个string类型的变量。

3、string中的字符的相应操作

isalnum(c)       如果是字母或者数字的话返回true;

isalpha(c)        如果是字母的话返回true;

iscntrl(c)          如果是操作字符的话返回true;

isdigit(c)         如果是数字的话返回true;

isgraph(c)        如果不是空格而且能打印出来的返回true;

islower(c)        如果是小写字符的话返回ture;

isprint(c)         如果能打印出来的话返true;

ispunct(c)        如果c不是一个操作字符的话返回true;

isspace(c)        如果是空格的话返回true;

isupper(c)        如果是大字字母的话返回true;

isxdigit(c)        如果是十六进制的数返回true;

tolower(c)       如果是大写字母,返回对应的小写字母。

toupper(c)       跟上面相反。

PS(1)遍历string中每个字母的新方法(新11特性)

for(declaration :  expression)

statement;

declaration:就是用来存从string中拿出的每个字母。可以有赋值和引用2种,就和数组的形参是一个意思。

expression:  就是string类型的变量。

statement:   就是statement;

e.g     for(auto c:str)                   for(auto &c:str)

{                                     {
            }                                     }

(2)可以用decltype()方法来给出变量类型。

e.g    decltype(s.size())   count;     就可以很方便的定义一个不知道是啥类型的新变量;

(3) 以.h结束的头文件是C版本的,是没有名字空间的,而以c开头的头文件是c++版本的,含有名字空间。

3.3 Library vector Type

**首先当然是头文件和名字空间的引用啦

#include <vector>
using std::vector;

1、定义,初始化vector

(1)vector<T> v1       创建一个空的存放T类型的vector;

(2)vector<T> v2(v1)        通过拷贝v1来创建v2;

(3)vector<T> v3(n,val)       创建一个v3,其中含有n个值为val的数据;

(4)vector<T> v4(n)            创建一个还有n个初始化的变量

(5)vector<T> v5{a,b,c……}         创建一个v5,其中含有的数据为a,b,c,d……

(6)vector<T> v5={a,b,c……}       同(5)

2、vector的相关操作

(1)向vector中加入元素

e.g

vector<string> text;
string word;
while(cin>>word)
{
text.push_back(word);
}

(2)v.empty()            如果是空的返回true;

(3)v.size()                返回v的长度;

(4)v[n]                    返回第n个位置的引用;

(5)v1=v2                 用v2的元素取代v1;

(6)v={a,b,c……}        用a,b,c……来取代v中的元素;

(7)还有就是比较等等的判断。

3.4  循环(略过……)

3.5 Arrays

1、定义及初始化数组

(1)定义空数组

int  arr[n];       //首先必须有类型,不能用auto来推测,还有就是n必须是常量,还有其中的value是随机的;

(2)定义+初始化

int a1[]={0,1,2};       //自动设定长度为3;

int a2[5]={1,3};       //等同于a2[5]={1,3,0,0,0}

int a3[2]={2,4,5};   // error,元素个数超过数组长度

(3)没有string,和vector的赋值copy的定义初始化方法

(4)复杂的数组(纯翻译)

int arr[10];

int (*Parray)[10]  = &arr;

int (&arrRef)[10] = arr;         //引用

2、访问数组中的元素

(1)遍历

  for(auto i:score)

    cout<<i<<endl;

(2)访问其中的一个

array[3],访问第4个元素,因为标号从0开始

3、指针与数组。

不多说,列一些我觉得比较重要的地方把

(1)首先,数组名可以理解为一个常指针,不可以改变其指向,其指向数组头,即array[0]。

(2)array = &array[0]

(3)在发生数组长度改变的时候,一定要注意你原先指向尾部的指针已经废掉了。切记切记。

4、C版本的string

(1)定义

char a="Hello World!";

(2)方法

strlrn(a);   测数组长度(不包括末尾的‘\0’)

strcmp(p1,p2)        比较p1和p2,如果p1>p2,那么返回一个正值, 如果p1=p2,那么返回0,如果p1<p2,那么返回一个负值,

strcat(p1,p2)          将p2加到p1的后面

strcpy(p1,p2)         将p2拷贝到p1;

(3)新旧版本的转换

char a[] = b.c_str();

C++primer学习笔记(一)——Chapter 3的更多相关文章

  1. C++ Primer学习笔记(三) C++中函数是一种类型!!!

    C++中函数是一种类型!C++中函数是一种类型!C++中函数是一种类型! 函数名就是变量!函数名就是变量!函数名就是变量! (---20160618最新消息,函数名不是变量名...囧) (---201 ...

  2. C++ Primer学习笔记(二)

    题外话:一工作起来就没有大段的时间学习了,如何充分利用碎片时间是个好问题. 接  C++ Primer学习笔记(一)   27.与 vector 类型相比,数组的显著缺陷在于:数组的长度是固定的,无法 ...

  3. C# step by step 学习笔记8 CHAPTER 9 使用枚举和结构创建值类型

    C# 2012 step by step 学习笔记8 CHAPTER 9 使用枚举和结构创建值类型 本章内容 声明一个枚举类型 创建并使用一个枚举类型 声明一个结构类型 创建并使用一个结构类型 解释结 ...

  4. C++primer学习笔记(二)——Chapter 4

    4.1  Fundamentals 1.Basic Concepts (1)操作符分为一元,二元或者三元操作符: (2)复杂的表达式中含有很多操作符时: 规则一:分为不同的级别,级别高的先运行: 规则 ...

  5. C++primer学习笔记(四)——Chapter 6

    6.1  Function Basics 一.函数的构造 type functionName( parameters list) statement 1.首先格式如上,一个函数一定要有返回值的类型ty ...

  6. C++primer学习笔记(三)——Chapter 5

    5.1   Simple Statements 1.记得每个语句后面加上”;”不过现在编译器都有实时编译,一般都不会忘记的, 2.空语句 (1)就是啥都没有.只有一个“:” (2)还是有很多用处的,例 ...

  7. 【Convex Optimization (by Boyd) 学习笔记】Chapter 1 - Mathematical Optimization

    以下笔记参考自Boyd老师的教材[Convex Optimization]. I. Mathematical Optimization 1.1 定义 数学优化问题(Mathematical Optim ...

  8. C++ Primer学习笔记(一)

    始终对C++念念不忘,看过 一个32岁入门的70后程序员给我的启示  之后,心情激荡,更是一发不可收拾. 认真地说,我不是一个执着的人,见异思迁,好读书而不求甚解,兼之情绪化(~~ 某些方面),于是怒 ...

  9. java系列:《java核心技术 卷1》学习笔记,chapter 11 调试技巧

    11. 6 调试技巧 1)一个不太为人所知却非常有效的技巧是在每个类中放一个main方法,这样就可以对每个类进行单元测试.这个方法可以保留,因为在java虚拟机只调用启动类的main方法. 2)   ...

随机推荐

  1. 基于TcpListener的web服务器

    写在前面 上篇文章根据<asp.net 本质论>书上提供的例子,实现了一个简单的web服务器,本篇文章将介绍另一种实现方式——基于TcpListener的web服务器. TcpListen ...

  2. linux查看内核版本、系统版本、系统位数(32or64)

     linux查看内核版本.系统版本.系统位数(32or64) 2011-05-01 22:05:12 标签:linux 内核版本 休闲 系统版本 系统位数 1. 查看内核版本命令: 1) [root@ ...

  3. 浏览器兼容性小整理和一些js小问题(后面会继续更新)

    最近在啃jQuery的源码,估计会啃到很多浏览器兼容性的问题,所以整理一下 1,IE下的内存泄露. 在IE中不在DOM树中的独立节点有javascript变量引用它的时候不会被回收. 解决:手动将该j ...

  4. vim显示行号

    在Linux环境下的编辑器有vi.vim.gedit等等.进入这些编辑器之后,为了方便我们需要编辑器显示出当前的行号,可偏偏编辑器默认是不会显示行号的.我们有二种办法可以解决: 第一种是,手动显示:在 ...

  5. PHP快速抓取快递信息

    <?php header("Content-type:text/html;charset=utf-8"); /** * Express.class.php 快递查询类 * @ ...

  6. C# 代理/委托 Delegate

    本文转载自努力,努力,努力 1. 委托的定义:委托是函数的封装,它代表一"类"函数.他们都符合一定的签名:拥有相同的参数列表,返回值类型.同时,委托也可以看成是对函数的抽象,是函数 ...

  7. There is no getter for property named 'purchaseApplyId' in 'class java.lang.Long'

    mapper.xml: <delete id="deleteByPurchaseAppyId" parameterType="Long"> < ...

  8. iterator与const_iterator及const iterator区别

    如果你传递过来一个const类型的容器,那么只能用const_iterator来遍历.  C++ Code  12345   void Method(const vector<int> v ...

  9. gpart 使用笔记

    需求 将260G 的/home 分区拆成/home与/data,原/home分区上的数据不用保留,新/home为100G,剩余空间给/data gpart过程 1.df 结果: # Device   ...

  10. Java for LeetCode 073 Set Matrix Zeroes

    Given a m x n matrix, if an element is 0, set its entire row and column to 0. Do it in place. 解题思路: ...