`

Vector用法

阅读更多
线性结构中的顺序表有三种,向量,栈和队列
栈和队列在很多数据结构的书中都有论述到。 唯独向量这一种顺序表很少现在记录下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)为分割符来分割的
分享到:
评论

相关推荐

    清华大学C++课件中vector用法实例

    清华大学C++课件中vector用法实例 本文将详细介绍清华大学C++课件中vector用法实例,涵盖了vector的基本操作、算法和函数对象的使用。...通过本文,读者可以更好地理解C++ STL中的vector容器,并掌握它的使用方法。

    C++_Vector用法深入剖析

    ### C++ Vector 用法深入剖析 #### 一、Vector 的基本概念与使用场景 Vector 是 C++ 标准模板库 (STL) 中的一种容器,它可以被理解为一种能够自动管理内存的动态数组。Vector 支持随机访问,并且在内部通过一个...

    C++数组vector用法.pdf

    C++数组vector用法.pdf C++ 标准库中的容器类 vector 是一种非常重要的数据结构,用于管理动态数组。下面我们将详细介绍 vector 的优点和使用注意事项。 为什么选择 vector? 在一些使用 MFC 的程序中,经常看到...

    C++ Vector使用方法

    下面我们将详细探讨`vector`的使用方法和相关知识点。 首先,引入`vector`所需的头文件是`#include &lt;vector&gt;`。`vector`是一个模板类,可以用来存储不同类型的数据,例如整数、浮点数或者自定义对象。例如,`vector...

    动态数组vector用法.docx

    动态数组vector用法 动态数组vector是C++ STL(Standard Template Library)中的一种容器,用于存储和操作动态大小的数组。下面是关于vector的一些重要知识点: Vector概述 vector是一种Sequence Container,...

    VC中vector用法

    在VC(Visual C++)中,`vector`是标准库中的一个重要容器,它提供了一种动态数组的功能,能够根据需要自动调整大小...以上就是VC中`vector`的主要用法和特性,掌握这些知识将帮助你在实际编程中更高效地使用`vector`。

    C++Vector用法详解.pdf

    ### C++ Vector 用法详解 #### 一、Vector 概述 `vector` 是 C++ 标准模板库(STL, Standard Template Library)中的一种动态数组容器,它可以自动管理内存并根据需要调整大小。作为一种高效且灵活的数据结构,`...

    最全Vector用法总结.pdf

    《最全Vector用法总结》 C++标准库中的`std::vector`是一个非常重要的容器,它提供了动态数组的功能,支持高效地进行插入和删除操作。`vector`的存储空间是连续的,这使得随机访问其元素变得非常快速。本文将全面...

    最全Vector用法总结.docx

    《最全Vector用法总结》 在C++标准库中,`std::vector`是一个非常重要的容器,它提供了动态数组的功能,允许我们在运行时改变其大小。`std::vector`是容器模板类,提供了许多便利的操作,使得在处理序列数据时更加...

    java中vector的用法

    这个示例代码展示了如何使用 Vector 的各种方法来操作向量。输出结果如下: ``` [one] [one, two] [one, two, three] [zero, one, two, three] [zero, one, two, oop, three] [zero, one, two, three, three] [zero,...

    动态数组vector用法[借鉴].pdf

    《动态数组vector用法详解》 在C++编程中,`std::vector`是一个非常重要的容器,它模拟了动态数组的行为,提供了灵活且高效的内存管理。这篇文章将深入探讨`std::vector`的用法,包括其核心特性、成员函数以及在...

    c++中vector用法集合

    下面我们将深入探讨`vector`的使用方法。 1. **创建和初始化**: - `vector`的创建可以使用默认构造函数,也可以指定初始容量或提供一个初始元素序列。 - 使用`push_back()`方法添加元素到`vector`末尾。 - 初始...

    vector用法的源代码资源

    这里我们将深入探讨`vector`的使用方法、常见操作以及其背后的实现原理。 一、`vector`的基本概念 `vector`是一个可以自动调整大小的数组,它存储一个元素序列,并且可以像数组一样通过索引来访问元素。`vector`的...

    std vector用法详解

    vector是C++标准模板库中的部分内容,它是一个多功能的,能够操作多种数据结构和算法的模板类和函数库。vector之所以被认为是一个容器,是因为它能够像容器一样存放各种类型的对象,简单地说,vector是一个能够存放...

    Vector用法介绍

    ### Vector用法介绍 #### 一、std::vector 概述与基本操作 `std::vector` 是 C++ 标准库中一个非常强大的容器类模板,它支持动态大小的数组,可以方便地进行元素的添加和删除。相比于 C 风格的动态数组(即 `int *...

    vector的用法深入解析

    "vector 用法深入解析" vector 是 C++ 标准库中的一个类模板,它提供了一个动态数组的机制,能够自动扩展和收缩以适应不同的数据量。下面将深入解析 vector 的用法和特性。 一、 vector 的定义和初始化 vector ...

    c++中的vector的使用方法

    ### C++中的Vector使用方法详解 #### 一、Vector简介 在C++中,`vector`是标准模板库(STL)中的一个重要组成部分,它提供了一种动态数组的功能,能够自动管理内存并支持随机访问。相比于传统的C风格数组,`vector`...

    c++ vector用法精讲(很精辟

    在本文中,我们将深入探讨`std::vector`的用法,包括其定义、初始化、值初始化以及各种操作。 首先,`std::vector`是一个模板类,它的实例可以存储任意类型的元素。例如,`vector&lt;int&gt;`表示一个存储整数的`std::...

    MFC的vector小例子

    在这个"MFC的vector小例子"中,我们将探讨`std::vector`的基础用法以及它在MFC项目中的应用。 1. **`std::vector`的定义与初始化** `std::vector`可以用来存储任何类型的对象,只需要提供对象的类型即可。例如,...

Global site tag (gtag.js) - Google Analytics