vector和平常的数组类型有啥区别
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vector和平常的数组类型有啥区别相关的知识,希望对你有一定的参考价值。
Vector 类 提 供 了 实 现 可 增 长 数 组 的 功 能, 随 着 更 多 元 素 加 入 其 中, 数 组 变 的 更 大。 在 删 除 一 些 元 素 之 后, 数 组 变 小。Vector 有 三 个 构 造 函 数,
public Vector(int initialCapacity,int capacityIncrement)
public Vector(int initialCapacity)
public Vector()
---- Vector 运 行 时 创 建 一 个 初 始 的 存 储 容 量initialCapacity, 存 储 容 量 是 以capacityIncrement 变 量 定 义 的 增 量 增 长。 初 始 的 存 储 容 量 和capacityIncrement 可 以 在Vector 的 构 造 函 数 中 定 义。 第 二 个 构 造 函 数 只 创 建 初 始 存 储 容 量。 第 三 个 构 造 函 数 既 不 指 定 初 始 的 存 储 容 量 也 不 指 定capacityIncrement。
---- Vector 类 提 供 的 访 问 方 法 支 持 类 似 数 组 运 算 和 与Vector 大 小 相 关 的 运 算。 类 似 数 组 的 运 算 允 许 向 量 中 增 加, 删 除 和 插 入 元 素。 它 们 也 允 许 测 试 矢 量 的 内 容 和 检 索 指 定 的 元 素, 与 大 小 相 关 的 运 算 允 许 判 定 字 节 大 小 和 矢 量 中 元 素 不 数 目。
---- 现 针 对 经 常 用 到 的 对 向 量 增, 删, 插 功 能 举 例 描 述:
addElement(Object obj)
---- 把 组 件 加 到 向 量 尾 部, 同 时 大 小 加1, 向 量 容 量 比 以 前 大1
insertElementAt(Object obj, int index)
---- 把 组 件 加 到 所 定 索 引 处, 此 后 的 内 容 向 后 移 动1 个 单 位
setElementAt(Object obj, int index)
---- 把 组 件 加 到 所 定 索 引 处, 此 处 的 内 容 被 代 替。
---- removeElement(Object obj) 把 向 量 中 含 有 本 组 件 内 容 移 走。
---- removeAllElements() 把 向 量 中 所 有 组 件 移 走, 向 量 大 小 为0。
---- 例 如:
import java.lang.System;
import java.util.Vector;
import java.util.Emumeration;
public class Avector
public static void main(String args[])
0. Vector v=new Vector();
1. v.addElement("one");
2. addElement("two");
3. v.addElement("three");
4. v.insertElementAt("zero",0);
5. v.insertElementAt("oop",3);
6. v.setElementAt("three",3);
7. v.setElementAt("four",4);
8. v.removeAllElements();
Vector中的变化情况:
1. one 2. one 3. one 4. zero 5.zero 6. zero 7. zero
8.
two two one one one one
three two two two two
three oop three three
three three four
---- 另 外,Vector 在 参 数 传 递 中 发 挥 着 举 足 轻 重 的 作 用。
---- 在Applet 中 有 一 块 画 布(Canvas) 和 一 个(Panel), 而Panel 中 放 着 用 户 要 输 入 的 信 息, 根 据 这 些 信 息 把 参 数 传 递 到canvas 中, 这 时 在Java 中 用 一 个 接 口(Interface), 而 在 接 口 中 需 用 一 个Vector 去 传 递 这 些 参 数。 另 外, 在 一 个 类 向 另 一 个 类 参 数 传 递 就 可 以 用 这 种 方 法。
---- 例 如:
import java.util.Vector
interface codeselect
Vector codeselect=new Vector();
显示数学信息
Vector(0)存入学生编号
Vector(1)存入学科
---- 在Panel 中 当 用 户 在 TextField 和Choice 中 选 择 自 己 所 要 求 的 内 容, 程 序 中
---- 通 过 事 件 响 应 把 值 传 到 向 量Vector 中。
---- 假 若 在Panel 类 中:
public void codepanel extends Panel
public void init()
**.
TextField s=new TextField();
Choice c=new Choice();
c. addItem("语文");
c.addItem("数学");
c.addItem("政治");
add(s);
add (c);
**
public boolean handleEvent(Event event)
if(event.id==Event.ACTION_EVENT)
if(event.target.instanceof Textfield)
coderesult.setElementAt(s.getText(),0);
else if(event.target intanceof Choice)
coderesult.setElementAt(new Integer(c.getSelectedIndex()),1);
---- 这 时, 向 量 中 已 经 存 入 学 生 编 号 和 学 科 索 引 号(0 为 语 文,1 为 数 学,2 为 政 治)。
---- 而 在Canvas 中 得 到 此 值,
public class codecanvas extends Canvas
public void code
public void paint
String str;
int t;
str=(String)coderesult.elementAt(0);
t=(new Integer(codeselect.elementAt(1).toString())).intValue();
if(t==0)
显示语文信息
else if(t==1)
显示数学信息
else if(t==2)
显示政治信息
参考技术A 这个问题好,我来回答吧,当是复习下。vector是c++标准库中定义的类型,是容器的一种。标准库中容器有很多种,vector只是最基本的一种,vector类型和数组类型的基本功能都是一样的,就是存储同类元素,但是他与数组最大的区别就是可以实现动态存储,举个例子来说:
#include<iostream>
#include<string>
using
namespace
std;
int
main
vector<string>
text;//定义string的容器,这时候该容器是空的.。
//翻译为容器非常形象吧,呵呵!
string
word;
//定义字符串变量
while(cin>>word)
text.push_back(word)//每输入一串字符,就将他装入我们定义的容器
//为了验证我们的结论,我们看看输出结果,当然vector类型可以像数
//数组一样用下标输出,不过这不是一个好办法
//输出容器中的数据我们一般使用迭代器,代码如下;
while(cin>>word)
text.push_back(word);
for(vector<string>::iterator
i=text.begin();i!=text.end();i++)
cout<<*i;
return
0;
楼主可以实验一下,运行后随便输入些字符按回车,可以发现使用容器的妙处。其实要讲清楚容器一两句可不行,这段代码只是一个小小的体验。
另外补充两点:
1、如果是用vc6.0进行编译,会出现四个warning不管它,这是因为vc6.0对c++标准库的支持不是很好
2、如果想多学点这方面的知识,建议阅读c++
primer! 参考技术B 数组定义了长度后就不能继续添加成员进去了
而vector向量可以自动扩展长度 起初长度是10本回答被提问者采纳 参考技术C C++ 的数组是一种内置类型,其大小运行期不可改变,内容存储于栈上。vector 是stl标准库中的类模板,其大小运行期确定,内容存储于堆上。
Vector 类在 java 中可以实现自动增长的对象数组; vector在C++标准模板库中的部分内容,它是一个多功能的,能够操作多种数据结构和算法的模板类和函数库。
向量、矩阵和数组数据类型有啥区别?
【中文标题】向量、矩阵和数组数据类型有啥区别?【英文标题】:What are the differences between vector, matrix and array data types?向量、矩阵和数组数据类型有什么区别? 【发布时间】:2016-03-03 03:31:12 【问题描述】:R 提供了三种类型来存储同质对象列表:vector
、matrix
和 array
。
据我所知:
vector
是一维数组的特例
matrix
是二维数组的特例
array
也可以有任何维度级别(包括 1 和 2)。
在向量上使用一维数组和在矩阵上使用二维数组有什么区别?我们是否需要在它们之间进行转换,还是会自动发生?
【问题讨论】:
【参考方案1】:matrix
和 2D array
之间没有区别:
> x <- matrix(1:10, 2)
> y <- array(1:10, c(2, 5))
> identical(x, y)
[1] TRUE
...
matrix
只是一个更方便的构造函数,还有很多函数和方法只接受二维数组(也就是矩阵)。
在内部,数组只是具有维度属性的向量:
...
> attributes(x)
$dim
[1] 2 5
> dim(x) <- NULL
> x
[1] 1 2 3 4 5 6 7 8 9 10
> z <- 1:10
> dim(z) <- c(2, 5)
> is.matrix(z)
[1] TRUE
引用language definition:
矩阵和数组只是具有
dim
属性的向量和 可选dimnames
附加到向量。[...]
dim
属性用于实现数组。的内容 数组以列优先顺序存储在向量中,dim
属性是一个整数向量,指定相应的范围 数组。 R 确保向量的长度是 尺寸的长度。一维或多维的长度 可能为零。向量与一维数组不同,因为后者 具有长度为 1 的 dim 属性,而前者没有 dim 属性。
【讨论】:
“......内部数组只是向量......” - 类函数为向量和一维数组提供不同结果的事实如何? 您的问题是什么? R中有隐式类。 @Roland 也许你应该编辑你的答案以包括“有隐式类”的这些细节。详尽解释如何使用class()
、mode()
和typeof()
等函数来最终确定向量、数组和矩阵等之间的差异可能很有用。以上是关于vector和平常的数组类型有啥区别的主要内容,如果未能解决你的问题,请参考以下文章
boost::container::vector 和 std::vector 有啥区别