p111~p114:

与旧代码的接口

1、C++程序中的C风格字符串:任何出现字符串字面值的地方都可以以空字符结束的字符数组来替代。

    const char str[] = {"Hello, world"};
string s(str);

2、如果程序的某处需要一个C风格字符串:利用 s.c_str()返回。

示例:

#include<iostream>
using std::cout;
using std::cin;
using std::endl;
#include<string>
using std::string;
int main()
{
string s = "Hello, world";
const char *str = s.c_str(); // 结果指针的类型是const char*
// 输出1
cout << str << endl;
// 改变s的值之后,str可能会失去效用,如果想一直使用返回的数组,最好将该数组拷贝一份。
s += ", my name is jack.";
// 输出2
cout << str << endl;
return ;
}

输出结果:

3、使用数组初始化 vector对象。

(用于初始化 vector对象的值可能仅是数组的一部分,可以用arr+n来表示首尾元素的地址)

#include<vector>
using std::vector;
#include<iterator>
using std::begin;
using std::end;
int main()
{
int int_arr[] = {, , , };
vector<int> ivec(begin(int_arr), end(int_arr));
return ;
}

多维数组

1、谨记:严格来说,C++语言中没有多维数组,通常所说的多维数组其实是数组的数组。这一点,对今后理解和使用多维数组大有益处。

2、对于二维数组来说,常把第一个维度称为“行”,第二个维度称为“列”。

3、多维数组的初始化。(两种方式)

    int ia[][] = {
{, , },
{, },  // 初始化前第二行的前两个元素
{, , }
}

当然也可以:

int ia[][] = {, , , , , , , , , };

(通常,只想初始化个别元素时使用第一种方式,其余元素会被“默认初始化”)。

4、多维数组的下标引用。以int arr[10][10][10];为例,

1)如果含有的下标运算符和数组维度一样多,

例如 arr[1][2][3];表示给定类型的元素,这里是 int型。

2)如果表达式含有的下标运算符数量比数组的维度小,则表达式的结果将是给定索引处的内层数组,

例如 arr[1][2];表示:通过索引1得到一个最外层数组,它含有10个数组,通过索引2获得其中一个含有10个int的数组。

5、多维数组的两种遍历方式:嵌套的for循环范围for语句

注意,在使用range for遍历多维数组的时候, auto row : ia 中的row会转变为指针类型,导致内层循环不合法,

因此,即使是不改变数组的值,也应当写成 const auto &row : ia,也就是说,要使用范围for语句处理多维数组,除了最内层的循环外,都要用auto &)

练习 3.41

#include<vector>
using std::vector;
#include<iterator>
using std::begin;
using std::end;
int main()
{
int int_arr[] = {, , , };
vector<int> ivec(begin(int_arr), end(int_arr));
return ;
}

练习 3.42

#include<vector>
using std::vector;
#include<iterator>
using std::begin;
using std::end;
#include<iostream>
int main()
{
vector<int> vector{, , , };
int arr[];
int i = ;
for (int x : vector) {
arr[i++] = x;
}
// 测试
for (int x : arr) {
std::cout << x << std::endl;
}
return ;
}

c++第二十天的更多相关文章

  1. javaSE第二十天

    第二十天    254 1:递归(理解)    254 (1)方法定义中调用方法本身的现象    254 (2)递归的注意事项    255 (3)递归的案例:    255 A:递归求阶乘    2 ...

  2. IT第二十天 - 面向对象编程思想、抽象类、异常处理、程序操作日志记录、本周总结 ★★★

    IT第二十天 上午 面向对象编程思想 1.组装电脑的设计: (1)电脑的组成:显示器+机箱 (2)机箱的组成:电源+主板+硬盘 (3)主板所包含的部件:cpu+内存+PCI接口+usb接口 (4)PC ...

  3. Python第二十天 shutil 模块 zipfile tarfile 模块

    Python第二十天  shutil 模块  zipfile   tarfile 模块 os文件的操作还应该包含移动 复制  打包 压缩 解压等操作,这些os模块都没有提供 shutil 模块shut ...

  4. OCM_第二十天课程:Section9 —》Data Guard _ DATA GUARD 搭建/DATA GUARD 管理

    注:本文为原著(其内容来自 腾科教育培训课堂).阅读本文注意事项如下: 1:所有文章的转载请标注本文出处. 2:本文非本人不得用于商业用途.违者将承当相应法律责任. 3:该系列文章目录列表: 一:&l ...

  5. 孤荷凌寒自学python第二十天python的匿名函数与偏函数

    孤荷凌寒自学python第二十天python的匿名函数与偏函数 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) Python为使函数的使用更加方便高效,可以使用两种特殊的函数简化语句书写. 一 ...

  6. Python 学习第二十天 django知识

    一,django models 1,django ORM获取后台数据的方式,总共有三种 (1)v1 = models.Business.objects.all()   返回值为QuerySet类型,内 ...

  7. java分享第二十天(build.xml的语法及写法)

    通常情况下,Ant构建文件build.xml应该在项目的基础目录.可以自由使用其他文件名或将构建文件中其他位置.在本练习中,创建一个名为build.xml 在电脑的任何地方的文件. <?xml ...

  8. python第二十天-----Django补充

    学习python已经20天了啊,从一个不萌萌哒的战5渣升级到了一个萌萌哒的战5渣 1.分页(这是一个很通用的模块,不论在任何框架里都可以使用哦) class Page(object): def __i ...

  9. iOS 进阶 第二十天(0520)

    0520 -KVO 如下图所示:(面试可能会问到,你就按照下面的说) 注意:NSString类型的成员变量用set方法时,要记得用copy,至于为什么,知道这么用就行了.如下图:

  10. 第三百零八至三百二十天 how can I 坚持

    十三天..2月4号至2月16号,好快,假期还没开始就结束了.一一回忆下. 2月4号,腊月二十六,最后一天上班,没多大事,好像是玩了一天,东月回家,貌似路上好折腾,晚上D401,和她聊了一路,也聊了好多 ...

随机推荐

  1. iOS 数据类型转换

    1.NSString转化为UNICODE String:(NSString*)fname = @“Test”; char fnameStr[10]; memcpy(fnameStr, [fname c ...

  2. (三)微信小程序之发送服务通知(模板消息)

    1.后端获取AccessToken返回给微信端 微信小程序端请求后端得到AccessToken   2.后端获取openid返回给微信端   微信小程序端登录请求后端得到openid   3.发送消息 ...

  3. Oracle12c Release1安装图解(详解)

    工具/原料   Windows系统平台 Oracle12cR1数据库软件 方法/步骤   1 我的机器基础环境:Windows8(x64) + Oracle11g Release2(x64): 初次全 ...

  4. JS-在线运行代码小工具

    原理:window.open()方法,open一个新的空白页,然后把文本框中粘贴的代码通过DOM操作,写到新的代码页中, 再利用document.write的功能(写进去之前把其他的全部删掉,并且写进 ...

  5. CSS-用伪元素制作小箭头(轮播图的左右切换btn)

    先上学习地址:http://www.htmleaf.com/Demo/201610234136.html 作者对轮播图左右按钮的处理方法一改往常,不是简单地用btn.prev+btn.next的图片代 ...

  6. handlebars的使用

    web 开发中,js 解析JSON 是经常的事情.非常繁琐.handlebars 使用了模版,只要你定义一个模版,提供一个json对象,handlebars 就能吧json对象放到你定的模版中 htm ...

  7. SignalR实现在线聊天室功能

    一.在线聊天室 1.新建解决方案 SignalROnlineChatDemo 2.新建MVC项目 SignalROnlineChatDemo.Web (无身份验证) 3.安装SignalR PM> ...

  8. 【BZOJ3727】PA2014 Final Zadanie 树形DP

    [BZOJ3727]PA2014 Final Zadanie Description 吉丽YY了一道神题,题面是这样的:“一棵n个点的树,每条边长度为1,第i个结点居住着a[i]个人.假设在i结点举行 ...

  9. 【BZOJ1630/2023】[Usaco2007 Demo]Ant Counting DP

    [BZOJ1630/2023][Usaco2007 Demo]Ant Counting 题意:T中蚂蚁,一共A只,同种蚂蚁认为是相同的,有一群蚂蚁要出行,个数不少于S,不大于B,求总方案数 题解:DP ...

  10. 【BZOJ2938】[Poi2000]病毒 AC自动机+DFS

    [BZOJ2938][Poi2000]病毒 Description 二进制病毒审查委员会最近发现了如下的规律:某些确定的二进制串是病毒的代码.如果某段代码中不存在任何一段病毒代码,那么我们就称这段代码 ...