[c++primer][03]标准库类型

3.1 using声明

using namspace::name;

一旦使用了using声明,就可以直接引用名字,不需要再引用该名字的命名空间

3.2 string类型

读入未知数目的string对象

while(cin >> word){
        cout << word << endl;
}

用getline读取整行文本,默认遇到换行符结束( 不存储换行符 )

while(getline(cin, line){
    cout << line << endl;
}

string对象的赋值

从概念上讲,赋值操作先把左操作数占用的空间释放,再分配足够存放右操作数的内存空间,最后将右操作数中所有字符复制到新分配的空间。

下标操作

string类型可以通过[ ]访问单个字符,下标操作可用作左值,下标值(索引)应为string::size_type类型

3.3 vector类型

vector是一个类模板(class template),可用来定义任意多种数据类型。vector不是数据类型,vector<int>是数据类型。

初始化

vector<T> v(n);  //v含有值初始化的元素的n个副本

什么是值初始化?

如果没有指定元素的初始化式,标准库将自行提供一个元素初始值进行值初始化,这个初始值将用来初始化容器中的每个副本。根据vector存放的数据类型分三种情况:1)内置类型,初始值为0;2)含构造函数的类类型,用默认构造函数初始化;3)无构造函数,标准库仍然产生一个带初始值的对象。

必须是已经存在的元素才能用下标操作符进行索引。通过下标操作进行赋值时,不会添加任何元素。

3.4 迭代器简介

现代C++更倾向于使用迭代器而不是下标操作访问容器元素。

迭代器的操作

由end操作返回的迭代器指向vector的“末端元素的下一个”,称为超出末端迭代器。迭代器支持自增或解引用,但end返回的迭代器不指向任何元素,不能进行上述操作。

用==或!=操作符来比较迭代器,如果两个迭代器指向同一对象,则它们相等,否则不相等。

const_iterator

算术操作(vector迭代器)

iter + n;

iter - n;

iter1 – iter2; //计算迭代器对象的距离,该距离是名为different_type的signed类型

注意:任何改变vector长度的操作都会使已存在的迭代器失效。

3.5 bitset类型

Bitset<32> bitvec;//定义了一个含有32位的bitset对象

用string对象初始化bitset对象时,从string对象读入位集的顺序是从右向左(string对象的最右边字符用来初始化bitset对象低阶位)

size_type是string类型和vector类型定义的与机器无关的unsigned 类型,用于保存任意string对象或vector对象的长度。

different_type是由vector类型定义的signed整型,用于存储任意两个迭代器间的距离。

size_t是与机器相关的unsigned类型,其大小足以保证存储内存中对象的大小;

ssize_t是与机器相关的signed类型。

Unix编程之size_t、ssize_t

时间: 2025-01-02 03:12:12

[c++primer][03]标准库类型的相关文章

C++ Primer 学习笔记_7_标准库类型(续1) -- vector类型

 标准库类型(二) --vector类型 引子: vector是同一种类型的对象的集合,每个对象都有一个对应的整数索引值.和string对象一样,标准库将负责管理与存储元素相关的内存. 我们将vector称之为容器,一个容器中的所有对象都必须是同一类型的! [cpp] view plaincopyprint? #include <vector> using std::vector; #include <vector> using std::vector; [模板] vector

C++ Primer笔记1_转义字符_标准库类型string_标准库类型vector

1.转义字符 一般有两种方式: \x后紧跟1个或多个十六进制数字.或\后紧跟1.2.3个八进制数字,当中数字部分是字符相应的数值. #include <iostream> using namespace std; int main() { bool b = 10; bool b1 = true; bool b2 = false; cout << b << endl; cout << b1 << endl; cout << b2 <

C++ Primer 学习笔记_8_标准库类型(续2) -- iterator

 标准库类型(三) --iterator 序言: 迭代器是一种检查容器内元素并遍历容器元素的数据类型. 所有的标准库容器都定义了相应的迭代器类型,而只有少数的容器支持下标操作:因此,现代C++更倾向于使用迭代器而不是下标操作访问容器元素. 正文: 1.容器的iterator类型 每个标准库容器类型都定义了一个名为iterator的成员: [cpp] view plaincopyprint? vector<int>::iterator iter; vector<int>::ite

C++ Primer 学习笔记_9_标准库类型(续3) -- biteset

 标准库类型(四) --biteset 序言: 位是用来保存一组项或条件的yes/no信息[标识]的简洁方法. [cpp] view plaincopyprint? #include <bitset> using std::bitset; #include <bitset> using std::bitset; 正文: 1.bitset对象的定义和初始化 和vector对象不同的是:bitset类型对象的区别在于其长度而不是类型.在定义bitest时,要在尖括号中说明给出他的长

C++ Primer 第四版读书笔记(二)之标准库类型

C++定义了一个内容丰富的抽象数据类型标准库,其中最重要的标准库类型是string和vector,它们分别定义了大小可变的字符串和集合.string和vector往往将迭代器用作配套类型,用于访问string中的字符,或者vector中的元素. 另一种标准库类型为bitset,提供了一种抽象方法来操作位的集合. string类型支持长度可变的字符串,vector用于保存一组指定类型的对象. bitset类标准库类型提供了更方便和合理有效的语言级的抽象设施.通过这个类可以把某个值当作位的集合来处理

【C++ Primer每日一刷之五】标准库类型小结

标准库类型小结 C++ 标准库定义了几种更高级的抽象数据类型,包括 string 和 vector 类型.string 类型提供了变长的字符串,而 vector 类型则可用于管理同一类型 的对象集合.迭代器实现了对存储于容器中对象的间接访问.迭代器可以用于访问和遍历 string 类型和vectors 类型的元素.下一节将介绍 C++ 的内置数据类型:数组和指针.这两种类型提供了类似于 vector 和 string 标准库类型的低级抽象类型.总的来说,相对于C++ 内置数据类型的数组和指针而言

C++ Primer 学习笔记_6_标准库类型 -- 命名空间using与string类型

 标准库类型(一) --命名空间using与string类型 引: 标准库类型是语言组成部分中更基本的哪些数据类型(如:数组.指针)的抽象! C++标准库定义的是高级的抽象数据类型: 1.高级:因为其中反映了更复杂的概念: 2.抽象:因为我们在使用时不需要关心他们是如何表示的,我们只需要知道这些抽象数据类型支持哪些操作就可以了. 正文: 一.命名空间的using声明 1. using std::cin; ::运算符的作用含义是右操作数的名字可以在左操作数的作用域中找到. 格式: [cpp]

C++(3)标准库类型

标准库类型(一)--命名空间using与string类型 引: 标准库类型是语言组成部分中更基本的哪些数据类型(如:数组.指针)的抽象! C++标准库定义的是高级的抽象数据类型: 1.高级:因为其中反映了更复杂的概念: 2.抽象:因为我们在使用时不需要关心他们是如何表示的,我们只需要知道这些抽象数据类型支持哪些操作就可以了. 正文: 一.命名空间的using声明 1. using std::cin; ::运算符的作用含义是右操作数的名字可以在左操作数的作用域中找到. 格式: [cpp] view

3.2 标准库类型string(上)

#include <string> #include <iostream> using std::string; using std::cin; using std::cout; using std::endl; //string定义在命名空间std中 int main() { /**************3.2.1 定义和初始化string*****************/ string s1; //默认初始化,S1是一个空字符串 string S2 = s1; //S2时S