线性结构中的顺序表有三种,向量,栈和队列
栈和队列在很多数据结构的书中都有论述到。 唯独向量这一种顺序表很少现在记录下vector的用法
先来C++,有关Vector类
vector 抽象容器类型之一(还有list和deque等),与其他几种容器类型不同的是它高效支持随机访问其中的元素。
使用vector,首先必须调用头文件(#include)
它的声明和初始化是这样的
vector <类型名> 变量名
vector vi = ( 10 , 1 ) 初始化为10个元素的vector,每个元素都为1
push_back()的用法是将元素插入vector容器的最尾部举个例子
vector vi;
int a[4] = { 0, 1, 2, 3};
for ( int i = 0; i<=4; ++i )
vi.push_back(a[i]);
此时vi就是0 1 2 3
如果改成
vi.push_front( a[i] );
vi就是3 2 1 0
/*--------vector方法列表--------
1.toString()
2.reset(x,y)//重新赋值例如:myv.reset(2,3);
3.getclone()//复制.例如myv2=myv1.getclone();
4.eqV(v)//是否相等例如if(v1.eqv(v2)){};
5.addV(v),addVNew(v)和minusV(v),minusVNew(v)//加法减法 v1.addV(v2);v3=v1.addVNew(v2);
6. scaleV(n)和scaleVNew(n)//伸长.见上
7.getLength()和setLength(n)//a=v1.getLength();v1.setLength(30);
8.getAngle()和setAngle(n)//得到与设置角度.
9.rot(n)和rotNew(n)//旋转
10.dot(v)//内积x=v1.dot(v2)
11.angleBetween(v)//得到夹角例如x=v1.angleBetween(v2);
-------------------------------*/
class vector {
var x:Number;
var y:Number;
//用于返回属性值的方法
function toString():String {
return ("["+x+","+y+"]")
}
//改变属性值的方法
function reset(getx:Number, gety:Number):Void {
x = getx;
y = gety;
}
//克隆向量.与mx不同//!!!!!!
function getclone():vector {
return new vector(x, y);
}
//比较相等否.
function eqV(getVector:vector):Boolean {
return (x == getVector.x && y == getVector.y);
}
//向量加法.
function addV(getVector:vector):Void {
x += getVector.x;
y += getVector.y;
}
//向量加法得到新向量.
function addVNew(getVector:vector):vector {
return new vector(x+getVector.x, y+getVector.y);
}
//向量减法
function minusV(getVector:vector):Void {
x -= getVector.x;
y -= getVector.y;
}
//向量减法得到新向量.
function minusVNew(getVector:vector):vector {
return new vector(x-getVector.x, y-getVector.y);
}
//向量缩放
function scaleV(n:Number):Void {
x *= n;
y *= n;
}
//向量缩放得到新向量. //向量缩放得到新向量.
function scaleVNew(n:Number):vector {
return new vector(x*n, y*n);
}
//得到向量的长度
function getLength():Number {
return Math.sqrt(x*x+y*y);
}
//设置向量长度
function setLength(len:Number):Void {
var r = this.getLength();
if (r) {
this.scaleV(len/r);
} else {
this.x = len;
}
}
//得到向量角度
function getAngle():Number {
return (180/Math.PI)*Math.atan2(y, x);
}
//设置向量角度
function setAngle(angle:Number):Void {
var r = this.getLength();
var tem = angle*(Math.PI/180);
x = r*Math.cos(tem);
y = r*Math.sin(tem);
}
//旋转.
function rot(angle:Number):Void {
var r = this.getLength();
var tem = angle*(Math.PI/180);
var ca = Math.cos(tem);
var sa = Math.sin(tem);
var rx = x*ca-y*sa;
var ry = x*sa+y*ca;
x = rx;
y = ry;
}
//旋转并得到新向量.
function rotNew(angle:Number):vector {
var v = new vector(x, y);
v.rotate(angle);
return v;
}
//内积
function dot(v:vector):Number { f
return x*v.x+y*vy;
}
//法向量计算省略.可以用rotateNew(90)得到.
//垂直验证省略.用(v1.dot(v2)==0)判断垂直.
//向量夹角.得到向量夹角绝对值.
function angleBetween(v:vector):Number {
var tem = this.dot(v);
return (180/Math.PI)*Math.acos(tem/(this.getLength()*v.getLength()));
}
// 构造函数
function vector(getx:Number, gety:Number) {
x = getx;
y = gety;
}
}
/*
*---------------------------------------
*另一个示范vector用法的c程序段
*来自C编程思想
*---------------------------------------
*/
#include < string.h >
#include < iostream.h >
#include < fstream.h >
#include < vector.h >
using namespace std;
int main() {
vector v;
ifstream in("Fillvector.cpp");
string line;
while(getline(in, line))
v.push_back(line); // Add the line to the end
// Add line numbers:
for(int i = 0; i < v.size(); i++)
cout << i << ": " << v[i] << endl;
} ///:~
//getline获得文件的一行
int main() {
vector words;
ifstream in("GetWords.cpp");
string word;
while(in >> word)
words.push_back(word);
for(int i = 0; i < words.size(); i++)
cout << words[i] << endl;
} ///:~
while(in >> word)是以空格(space)为分割符来分割的
分享到:
相关推荐
vector用法 vector用法 vector用法 vector用法
VC中vector用法
清华大学C++课件中vector用法实例
vector用法合集
C++数组vector用法.pdf
关于C++STL模板库Vector的基本操作函数的介绍与用法举例
c++ vector用法精讲(很精辟的,希望对大家有帮助
vector必看,讲了使用方法,注意事项,适合初学者
清华大学 很全面的vector用法 请大家指点
vector是C++标准模板库中的部分内容,它是一个多功能的,能够操作多种数据结构和算法的模板类和函数库。vector之所以被认为是一个容器,是因为它能够像容器一样存放各种类型的对象,简单地说,vector是一个能够存放...
最全Vector用法总结.pdf
本文是一篇word文档,主要介绍了java中vector的用法,让一些初学者更加了解vector的用法。
动态数组vector用法[借鉴].pdf
本压缩包中包含了c++中vector的使用,共有多个文件
主要介绍了C++ Vector用法详解,vector是C++标准模版库(STL,Standard Template Library)中的部分内容,本文详细介绍了它的方方面面,需要的朋友可以参考下
vector vector 是 C++ 标准库中定义的一种动态数组,它可以自动管理内存并根据需要调整大小。它是一种非常有用的数据结构,用于...**构建项目:**尝试使用 vector 构建小型项目,例如学生成绩管理系统或简单的队列。
c++ vector用法 C++内置的数组支持容器的机制,但是它不支持容器抽象的语义。要解决此问题我们自己实现这样的类。在标准C++中,用容器向量(vector)实现。容器向量也是一个类模板。 标准库vector类型使用需要的...
1、 vector::at()2、 vector::operator[]operator[]主要是为了与C语言进行兼容 2、 iterator _Last:指向
Vector用法介绍 里面自己看 (这个网站太恶心了 还要20个字以上 对他无语)