`

标准数组——向量(1)

阅读更多

 

正如我们已经看到的,尽管C++内置的数组支持容器的机制,但是它不支持容器抽象的

语义,为了在这样的层次上编写程序,在标准C++之前我们要么从某个途径获得这样的类,

要么自己实现这样的类。在标准C++中,数组类是C++标准库的一部分,现在它不叫数组

而叫向量vector 了。

当然向量是一个类模板,所以我们这样写

vector<int> ivec( 10 );

vector<string> svec( 10 );

上面的代码分别定义了一个包含10 个整型对象的向量和一个包含10 个字符串对象的向量。

在我们实现的Array 类模板与vector 类模板的实现之间,有两个主要区别,第一个区别是

vector 类模板支持向现有的数组元素赋值的概念以及插入附加元素的概念——即vector

数组可以在运行时刻动态增长,如果程序员希望使用这个特性的话,第二个区别是更加广

泛,代表了设计方法的重要转变。vector 类不是提供一个巨大的可以适用于向量的成员

操作集,如sort()、min()、max()及find()等等,而是只提供了一个最小集,如等于、小于操

作符,size()、empty()等操作,而一些通用的操作,如sort()、min()、max()和find()等等,则是

作为独立的泛型算法generic algorithm 被提供的。

要定义一个向量,我们必须包含相关的头文件

 

#include < vector >

下面都是vector 对象的合法定义

#include < vector >

// 创建vector 对象的各种方法

vector<int> veco; // 空的vector

 

const int size = 8;

const int value = 1024;

// size 为8 的vector

// 每个元素都被初始化为0

vector<int> vec1( size );

// size 为8 的vector

// 每个元素都被动始化为1024

vector<int> vec2( size, value );

// vtc3 的size 为4

// 被初始化为ia 的4 个值

int ia[4] = { 0, 1, 1, 2 };

vector<int> vec3( ia, ia+4 );

// vec4 是vec2 的拷贝

vector<int> vec4( vec2 );

既然定义了向量,我们就需要遍历里边的元素,与Array 类模板一样,标准vector 类模

板也支持使用下标操作符。例如

 

#include <vector>

extern int getSize();

void mumble()

{

int size = getSize();

vector< int > vec( size );

for ( int ix = 0; ix < size; ++ix )

vec[ ix ] = ix;

// ...

}

分享到:
评论

相关推荐

    MATLAM——创建空数组、行向量、列向量

    本代码主要利用MATLAB工具实现MATLAM——创建空数组、行向量、列向量,简单明了,易于理解

    Matlab数组和向量的介绍PPT教案学习.pptx

    在这个PPT教案中,我们将深入探讨Matlab中的基本数据结构——数组和向量。 数组在Matlab中扮演着核心角色,它们可以存储多维度的数据。数组的元素可以是单一的数据项,每个元素都有自己的位置,即行号和列号。对于...

    java 数据结构 数组 向量 字符串

    本文将深入探讨三种基本的数据结构——数组、向量和字符串,它们在Java开发中占据着核心地位。 #### 一、数组 数组是Java中最基础的数据结构之一,用于存储固定大小的同类型元素集合。数组可以在一维或多维中定义...

    浙江工商大学数学线性代数——向量组PPT课件.pptx

    "浙江工商大学数学线性代数——向量组PPT课件.pptx" 本PPT课件主要讲解线性代数中的向量组相关知识点,共77页,内容涵盖向量的定义、向量的线性运算、向量空间、向量组的线性相关性等。 一、向量的定义 * 向量...

    Matlab学习心得系列——002.Matlab编程思想——向量化编程.pdf

    5. **向量化逻辑操作**:在处理逻辑判断时,MATLAB同样支持向量化,例如`A&gt;5`会产生一个与A同型的逻辑数组,表示A中的每个元素是否大于5。 向量化编程不仅提高了MATLAB代码的可读性和简洁性,而且由于MATLAB在内部...

    MATLAB培训教程 MATLAB基础入门教程 第3章-Matlab数值数组及向量化运算(共49页).ppt

    综上所述,本教程的第三章详细介绍了MATLAB数值计算的核心——数组的创建、寻访、运算以及向量化编程,还包括对特殊数值(如NaN)的处理和逻辑关系操作。学习这部分内容,将为后续深入学习MATLAB的其他功能,如符号...

    数组Array(csdn)————程序.pdf

    如果需要动态调整大小的数组,C++标准库提供了`std::vector`作为替代。`std::vector`是一种动态数组,可以在运行时改变大小。它的内部会自动处理内存管理,包括元素的插入和删除,使得这些操作比原始数组更高效。 ...

    矩阵与数组PPT课件

    在MATLAB中,除了常规数组外,还有一种特殊类型的数组——元胞数组,它的每个元素可以是任意类型的数据。 3. **向量**: 向量可以视为一维数组,从数学角度看,向量分为行向量和列向量,它们都是特定形式的矩阵。...

    数据结构 C++语言描述——应用标准模板库(STL)(第2版)源代码

    作者将C++语言作为算法描述语言,应用包含规范化的数据结构的标准模板库,集中讲述了数组、向量、表、关联树容器,以及集合、映射、堆、哈希表和图等数据结构及其算法,重点讨论了如何高效地存储大型数据集合,涵盖...

    matlab中数组和矩阵的区别.rar

    本文将详细探讨这两者之间的差异,并通过一个具体的例子——三维数组——来进一步阐述。 首先,数组是MATLAB中最基础的数据类型,它可以包含任何相同类型的元素,如数值、字符串、逻辑值等。数组可以是一维、二维或...

    数据结构 C++语言描述——应用标准模板库(STL)(第2版)源代码 .net版

    作者将C++语言作为算法描述语言,应用包含规范化的数据结构的标准模板库,集中讲述了数组、向量、表、关联树容器,以及集合、映射、堆、哈希表和图等数据结构及其算法,重点讨论了如何高效地存储大型数据集合,涵盖...

    向量类向量类向量类向量类向量类

    向量类是C++标准库中的一个重要组成部分,属于STL(Standard Template Library,标准模板库)的一部分。在C++中,`std::vector`是实现动态数组概念的模板类,它允许我们创建一个可变大小的数组,可以方便地进行元素...

    数据结构——二维数组PPT学习教案.pptx

    从不同的角度,我们可以将二维数组视为行向量或列向量的集合。如果我们将每一列作为一个元素,那么二维数组可以转换为一个线性表,其中每个元素是一个包含该列所有元素的一维数组。同样,如果我们将每一行看作一个...

    向量相加C程序

    此外,该程序还展示了如何实现简单的数学运算——向量相加,并通过适当的错误处理确保程序的健壮性。对于初学者而言,这是一个很好的学习示例,能够帮助他们理解C语言中的动态内存管理以及函数的定义与调用等核心...

    Java课程设计报告之稀疏矩阵与向量相乘

    在这个项目中,学生们需要理解和应用稀疏矩阵的压缩存储格式——CSR(Compressed Sparse Row)来实现矩阵与向量的乘法运算。 稀疏矩阵的CSR格式是一种存储非零元素的方法,它包括三部分:行索引数组I、列索引数组J...

    北京师范大学数据结构教学资料第4章——数组、串与广义表.ppt

    例如,二维数组可以看作是由行向量组成的矩阵,每个行向量又是由多个元素组成的数组。这样的结构使得多维数组能够表达更复杂的数据关系,例如,矩阵乘法、图形数据等。 二维数组的定义和初始化也可以分为静态和动态...

    数据结构C++语言描述——应用标准模板库STL

    书中详细介绍了包括数组、向量、列表、关联容器、集合、映射、堆以及哈希表和图在内的各种数据结构及其算法。通过这些内容,读者不仅能够学习到数据结构的基础知识,还能深入理解如何利用这些数据结构存储和处理大型...

    WebGL着色器——数组

    或者一个包含20个三维向量的数组: ```glsl vec3 v3Arr[20]; ``` 访问数组中的元素就像在其他语言中那样直接使用下标,如`arr[0]`代表数组的第一个元素,`arr[1]`则为第二个元素。 在WebGL中,为了在着色器之间...

    聚类程序——C++代码

    2. **数据结构与算法**:在处理K-Means时,数据通常被表示为多维数组或向量,每个元素代表一个数据点。程序需要有效地操作这些数据结构,执行计算距离、排序和迭代等操作。这可能涉及到对数组、向量或自定义数据结构...

Global site tag (gtag.js) - Google Analytics