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. coreseek/sphinx CentOS6.4下安装

    一.在CentOS6.4下安装coreseek之前需要预先安装以下软件 1.打开终端 输入 su 获取管理员权限 2.输入命令 yum install make gcc g++ gcc-c++ lib ...

  2. 关于HTML5的十大面试题

    1.html5的文档类型和字符集分别是什么? 答:<!doctype html>/<meta charset="UTF-8"> 2.在html5中如何嵌入一 ...

  3. oracle数据库sql比较日期

    select * from cc_random_check_info t where check_time > to_date('2016-09-09','yyyy-MM--dd')

  4. 让你变成ASP木马高手

    .名称:如何制作图片ASP木马 (可显示图片) 建一个asp文件,内容为<!--#i nclude file="ating.jpg"--> 找一个正常图片ating.j ...

  5. LeetCode——Best Time to Buy and Sell Stock

    Description: Say you have an array for which the ith element is the price of a given stock on day i. ...

  6. 【BZOJ3518】点组计数 欧拉函数

    [BZOJ3518]点组计数 Description 平面上摆放着一个n*m的点阵(下图所示是一个3*4的点阵).Curimit想知道有多少三点组(a,b,c)满足以a,b,c三点共线.这里a,b,c ...

  7. 【BZOJ3529】[Sdoi2014]数表 莫比乌斯反演+树状数组

    [BZOJ3529][Sdoi2014]数表 Description 有一张N×m的数表,其第i行第j列(1 < =i < =礼,1 < =j < =m)的数值为能同时整除i和 ...

  8. Spring应用配置文件上传的两种方案

    欢迎查看Java开发之上帝之眼系列教程,如果您正在为Java后端庞大的体系所困扰,如果您正在为各种繁出不穷的技术和各种框架所迷茫,那么本系列文章将带您窥探Java庞大的体系.本系列教程希望您能站在上帝 ...

  9. Guava增强for循环

    Guava的前身是Google Collections,是Google开发出的一个开源Java常用类库,包含了一些集合的便捷操作API.本文通过一些常用的例子来剖析Guava的奇妙之处. Guava是 ...

  10. rpyc

    import json import socket from thread import * from ansible_api import * from rpyc import Service fr ...