【编程基础】C++ Primer快速入门五:实用的模板库

除上篇博客介绍的基本数据类型外,C++ 还定义了一个内容丰富的抽象数据类 型标准库。包括 string 和 vector,它们分别定义了字符串和矢量(集合)。string 和 vector 往往用迭代器iterator访问 string 中的字符,或者 vector 中的元素。

另一种标准库类型 bitset,她提供了一些方法的集合,我们可以利用这些方法来像C语言那样控制整数的二进制表示的一个个比特位,比如01110101,我们可以利用bitset里提供的操作符来做与或非运算。

与整型值上的内置位操作符相比,bitset 类类型提供了一种更方便的处理位的方式,她就好像前者是为C设计的,而后者是专门为C++设计的。各人的孩子各人爱,我们既然使用C++,就用改多用bitset,不用、少用前者。

我啥我们在C++里要多用这些高级类型的数据呢?这是因为C语言定义的是低层数据类型,他们是机器相关的,比如在8位单片机上,int只有8位,32位处理器上,int用32位来表示。即据其具体机器表示来定义。

除了这些与C语言中定义相对应的类型外,C++ 标准库还定义了自己独有的高级的抽象数据类型。它使得我们在使用这些类型表示问题时不必明白数据到底如何表示的(到底是8位,32位),只需知道这些抽象数据类型支持哪些操作就可以了。

这其中,有两种重要的标准库类型是 string 和 vector。string 类型代表C++的字符串,vector代表数组,可用于保存一组指定类型的对象。

下面我举个例子:

使用 string 类型对象,必须包含相关头文件。如果提供了合适的关键字using 声明,那么编写出来的程序将会变得简短些:

#include <string>

using std::string;

int main() {

string girl1; 为空串 string girl2(girl1); 将 girl2 初始化为 girl1 的一个副本

string girl3("value"); 将girl3 初始化为一个字符串的副本 string girl4(n, 'c'); 将 girl4 初始化为字符 'c' 的 n 个副本

cin >> girl1; // 读进来以空格分开的字符串进入girl1

cout << girl1 << endl; //输出 girl1

vector<int> boy1; // boy1相当于int数组

vector<int> boy2(boy1); //拷贝boy1的元素进入boy2

}

原文发布于微信公众号 - 程序员互动联盟(coder_online)

原文发表时间:2015-07-16

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏MyBlog

Effective.Java 读书笔记(1)静态工厂和构造方法

用户在获得类它本身的实例的时候,通常会想到的就是使用public的构造器,但是一个类可以提供一个public的工厂方法。 这种工厂方法简化了返回该类实例的静态...

682
来自专栏阿凯的Excel

Python读书笔记18(初识自定义函数)

在分享自定义函数之前,我们要弄明白什么是函数、方法。之前的教程我有刻意用方法和函数两种方式来称呼具体的内容。例如删除列表的某个元素! ? 方法是函数的一种,类中...

3489
来自专栏编程心路

Java虚拟机内存管理(二)—堆的使用

Java 虚拟机作为运行 Java 程序抽象出来的计算机,具有内存管理的能力,像内存分配、垃圾回收等这些相关的内存管理问题,Java 虚拟机都会帮我们解决,所以...

652
来自专栏编程

对php多态的理解

「PHP开发者」 致力于做最专业的PHP中文开发者交流平台 php是面向对象的脚本语言,而我们都知道,面向对象的语言具有三大特性:封装,继承,多态。php理应具...

1997
来自专栏数据结构笔记

数据结构(一):什么是数据结构

数据的逻辑结构是从逻辑关系上描述数据(主要是相邻关系,比如栈、队列、链表等),它与数据的存储无关,是独立于计算机的。因此,数据结构可以看作从具体问题中抽象...

1304
来自专栏灯塔大数据

塔秘 | 从Zero到Hero,一文掌握Python关键代码

前 言 本文整体梳理了 Python 的基本语法与使用方法,并重点介绍了对机器学习十分重要且常见的语法,如基本的条件、循环语句,基本的列表和字典等数据结构,此...

3358
来自专栏软件开发 -- 分享 互助 成长

C++中关于指针初始化和使用NULL的理解

1、严禁使用未被初始化的指针:C++创建指针的时候,只分配存储地址的内存,并不会分配存储数据的内存,所以指针可能指向任何位置。    (1)使用解除运算符(*)...

17910
来自专栏技术点滴

不要被C++“自动生成”所蒙骗

不要被C++“自动生成”所蒙骗 C++对象可以使用两种方式进行创建:构造函数和复制构造函数。假如我们定义了类A,并使用它创建对象。 A a,b; A c=a; ...

2169
来自专栏C/C++基础

野指针

指向非法的内存地址指针叫作野指针(Wild Pointer),也叫悬挂指针(Dangling Pointer),意为无法正常使用的指针。

781
来自专栏数据科学与人工智能

【Python环境】Python函数式编程指南(2):函数

2. 从函数开始 2.1. 定义一个函数 如下定义了一个求和函数: def add(x, y): return x + y 关于参数和返回值的语法细节可以参考...

2095

扫码关注云+社区