C++链接库的使用,二维向量,三维向量,Ubuntu下C++测试向量库

1.#include<iostream>

using namespace std;

int main()

{

cout<<"Hello Woeld"<<endl;

return 0;

}

2.vector.cxx

#include<iostream>

int main()

{int k;

char x;

cout<<"请输入向量的维度:"<<endl;

cin>>k;

vector a(k),b(k),c(k);

cout<<"请输入A向量坐标:"<<endl;

cin>>a;

cout<<"请输入B向量坐标:"<<endl;

cin>>b;

L:cout<<"请输入运算符(+,-,*,q[退出])"<<endl;

cin>>x;

switch(x)

{case ‘+‘:c=a+b;break;

case ‘-‘:c=a-b;break;

case ‘*‘:c=a*b;break;

case ‘q‘:goto Z;

default:cout<<"错误"<<endl;

}

cout<<"C("<<c<<")";goto L;

Z:cout<<"按回车退出"<<endl;

return 0;

}

classvector.h

class vector

{public:

vector( int =1);           //默认长度构造函数

vector(const int*,int);    //使用数组参数构造函数

vector(const vector&);     //复制构造函数

~vector();                 //析构函数

//重载运算符

int  operator()()const;    //返回K值,即向量的维度

vector &operator=(const vector&);

friend vector operator+(const vector&,const vector&);

friend vector operator-(const vector&,const vector&);

friend vector operator*(const vector&,const vector&);

//重载输出输入

friend ostream&operator<<(ostream &output,const vector&);

friend istream&operator>>(istream &input,vector&);

private:

int *v;

int len;

};

//构造函数

vector::vector(int size)//类对象初始化

{v=new int[size];

for(int i=0;i<size;i++) v[i]=0;

len=size;}

vector::vector(const int*c,int size)//用于运算 加减乘 时构造正确的vector类型对象,然后返回给main中的C,达到正确输出的目的

{v=new int [size];

len=size;

for(int i=0;i<len;i++)

v[i]=c[i];}

vector::vector(const vector& a)

{len=a();

v=new int[len];

for(int i=0;i<len;i++)

v[i]=a.v[i];}

//析构函数

vector::~vector()

{delete[] v;

len=0;}

//运算符重载

int vector::operator()()const//括弧:为了将main中的K值(即向量的维度)传给类当中定义为保护类型的len类成员

{return len;}

istream&operator>>(istream &input,vector&a)//输入

{for(int i=0;i<a();i++)

input>>a.v[i];

return input;}

ostream&operator<<(ostream &output,const vector&a)//输出

{for(int i=0;i<a();i++)

output<<a.v[i]<<" ";

return output;}

vector operator+(const vector&a,const vector&b)//加法

{ int size=a();

int *c=new int[size];

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

c[i]=a.v[i]+b.v[i]; return vector(c,size);}

vector operator-(const vector&a,const vector&b)//减法

{ int size=a();

int *c=new int[size];

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

c[i]=a.v[i]-b.v[i];

return vector(c,size);}

vector operator*(const vector&a,const vector&b)//乘法

{ int size=a();

int *c=new int[size];

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

c[i]=a.v[i]*b.v[i];

return vector(c,size);}

vector &vector::operator=(const vector&a)//赋值号

{int *c=new int[len];

for(int i=0;i<len;i++)

v[i]=a.v[i];return *this;

}

[email protected]:~$ cd wx/Hello

[email protected]:~/wx/Hello$ g++ -E -o Hello.i Hello.cxx

[email protected]:~/wx/Hello$ g++ -S Hello.i -o Hello

[email protected]:~/wx/Hello$ g++ -c Hello.cxx

[email protected]:~/wx/Hello$ g++ -E -o Hello.i Hello.cxx

[email protected]:~/wx/Hello$ g++ Hello.o -o Hello -I ACE

[email protected]:~/wx/Hello$ Hello.exe

Hello.exe: command not found

[email protected]:~/wx/Hello$ ./Hello

Hello World!!

[email protected]:~/wx/Hello$

2.(1)静态链接库:

[email protected]:~$ cd wx/vec1

[email protected]:~/wx/vec1$ make

g++ -c  vector.cxx -o vector.o

g++ vector.o -o vector.exe

[email protected]:~/wx/vec1$ ./vector.exe

(2)动态链接库

[email protected]:~$ cd wx/vec2

[email protected]:~/wx/vec2$ make

g++ -DDLLBUILD -c vector.cxx -o vector.o

g++ -shared -o libvector.so vector.o

g++ vector.o -o vector.exe

[email protected]:~/wx/vec2$ ./vector.exe

C++链接库的使用,二维向量,三维向量,Ubuntu下C++测试向量库,布布扣,bubuko.com

时间: 2024-10-06 20:16:21

C++链接库的使用,二维向量,三维向量,Ubuntu下C++测试向量库的相关文章

PHP 使用GD库合成带二维码和圆形头像的海报步骤以及源码实现

PHP 使用GD库合成带二维码和圆形头像的海报步骤以及源码实现 之前记录过一篇文章,不过那只是简单将二维码合成到海报中去,这次还要合成头像,而且是圆形.所需要素材就不一一列举,直接代码吧 1.先获取用户头像 有的用户是自定义头像(自定义头像是其他站点),有的用户是小程序头像 1 if (!$user['logo_status'] && $user['logo']) { 2 $app_domain = config('app_url');//因为自己上传的头像都放在了小程序的后台上 3 $u

【转载】ArcBall二维控制三维旋转

原文:http://oviliazhang.diandian.com/post/2012-05-19/40027878859 由于目前大多的显示器是二维的,要控制三维物体的旋转就显得不那么直接了.ArcBall是一种将二维鼠标位置的变化映射到三维物体旋转的方法,让用户通过很直观的方法控制物体旋转. 网上相关方法还是不少的,包括: http://rainwarrior.thenoos.net/dragon/arcball.html http://nehe.gamedev.net/tutorial/

C++ 在堆上开辟与释放二维、三维指针

//C++ 在堆上开辟与释放二维.三维指针 #include<iostream> using namespace std; int main() { //二级指针的开辟与释放 int number = 0; int** p = new int*[4]; for(int i = 0; i < 4; i++) //分级定义数组大小 { p[i] = new int[4]; } for(int i = 0; i < 4; i++) { for(int j = 0; j < 4; j

(hdu step 6.1.2)Eddy&#39;s picture(在只给出二维坐标点的情况下,求让n个点连通的最小费用)

题目: Eddy's picture Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 172 Accepted Submission(s): 126   Problem Description Eddy begins to like painting pictures recently ,he is sure of himself to be

PHP:数组——二维转一维,二维转三维,将特定的数据作为键名

今天针对数组做一个总结,一句话:当我们面临多个数据时,要灵活运用数组+foreach去获取我们想要的结果 例子: 1.二维转一维数组 代码部分: 结果: 2.二维转三维 (1)代码部分:(显示方式1:将输出放在foreach循环里面) 结果: (1)代码部分:(显示方式2:将输出放在foreach循环外面) 结果: 什么时候在循环里面输出结果,什么时候在循环外面输出结果: (1)放在foreach里面打印,通常是只看一次就够了,打印後就 exit() (2)放在foreach外面打印,通常是看全

C语言malloc函数为一维,二维,三维数组分配空间

c语言允许建立内存动态分配区域,以存放一些临时用的数据,这些数据不必在程序的声明部分定义,也不必等到函数结束时才释放,而是需要时随时开辟,不需要时随时释放,这些数据存储在堆区.可以根据需要,向系统申请所取空间的大小,因为没有在声明部分定义它们为变量或数组,所以不能通过变量名或数组的方式去引用这些数据,只能通过指针来引用. 对内存的动态分配是通过系统提供的库函数来实现的,主要有malloc,calloc,free,realloc这四个函数. 接下来写一下malloc函数如何实现为一维,二维,三维数

Ubuntu下C++基于eigen库SVD矩阵奇异值分解效率分析

在优化求解问题中,经常要用到矩阵奇异值的SVD分解. 奇异值分解 (singularvalue decomposition,SVD)是一种可靠地正交矩阵分解法,它比QR分解法要花上近十倍的计算时间. 使用SVD分解法的用途是解最小平方误差法和数据压缩. 在Ubuntu下基于eigen C++库测试了eigen SVD算法的性能,即SVD求解最小二乘/伪逆,代码如下: //compile: g++ test_svd.cpp #include <iostream> #include <Eig

ubuntu下安装 openssl 开发库

ubuntu下安装 openssl 开发库 检查是否已安装openssl: sudo apt-get install openssl 如果已安装执行以下操作:sudo apt-get install libssl-devsudo apt-get install libssl0.9.8 Ubuntu 下安装 GTK+ 开发库sudo apt-get install libgtk2.0-dev

ubuntu下python安装第三方库(library)的简易方法

安装个easy_install工具 sudo apt-get install python-setuptools 然后sudo就OK了 比如Ubuntu下Python读写excel库 sudo easy_install xlrd sudo easy_install xlwt sudo easy_install xlutils 使用: import xlrd import xlwt import xlutils