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. APP适配IOS8,iPhone6和Plus截图简要说明

    本文转载至 http://blog.csdn.net/yongyinmg/article/details/41422873 原文:http://www.zcool.com.cn/article/ZMT ...

  2. Spring 工作流程简单介绍

    Spring Web MVC 处理Http请求的大致过程: 一旦Http请求到来,DispatcherSevlet将负责将请求分发. DispatcherServlet可以认为是Spring提供的前端 ...

  3. 上传文件提示IO Error

    百度查到的解决办法 http://www.wang0214.com/news/466.html 作者:深圳网站建设 原因: Asp.net中,上传文件的默认大小是4096 KB,也就是4M,不过你可以 ...

  4. 【Mysql】解决插入数据出现 Incorrect string value: '\xF0\x9F\x92\x8BTi...'错误

    背景: 用户输入的表单里边.存在 手机自带的表情,  在执行插入时候报错 Incorrect string value: '\xF0\x9F\x92\x8BTi...' 错误原因:我们在设置mysql ...

  5. LeetCode——Largest Number

    Description: Given a list of non negative integers, arrange them such that they form the largest num ...

  6. 图的建立(邻接矩阵)+深度优先遍历+广度优先遍历+Prim算法构造最小生成树(Java语言描述)

    主要参考资料:数据结构(C语言版)严蔚敏   ,http://blog.chinaunix.net/uid-25324849-id-2182922.html   代码测试通过. package 图的建 ...

  7. Tomcat远程任意代码执行漏洞及其POC(CVE-2017-12617)

    一.原理分析: 只需参数readonly设置为false或者使用参数readonly设置启用WebDAV servlet false,则Tomcat可以不经任何身份验证的控制直接接收PUT方式上传的文 ...

  8. Java web项目配置相关

    引申 XML 命名空间(XML Namespaces) XML Schema 教程 XSD(XML Schema Definition) XML Schema 语言也称作 XML Schema 定义. ...

  9. Oracle等待事件之log file parallel write

    log file parallel write表示等待 LGWR 向操作系统请求 I/O 开始直到完成 I/O.这种事件发生通常表示日志文件发生了I/O 竞争或者文件所在的驱动器较慢.这说明这种等待与 ...

  10. BBS - 文章评论

    一.文章评论 <div class="comment_region"> <div class="row"> <div class= ...