C++链接库的使用,二维向量,三维向量,Ubuntu下C++测试向量库
2014-05-06 10:46
155 查看
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;
}
ubuntu@ubuntu-virtual-machine:~$ cd wx/Hello
ubuntu@ubuntu-virtual-machine:~/wx/Hello$ g++ -E -o Hello.i Hello.cxx
ubuntu@ubuntu-virtual-machine:~/wx/Hello$ g++ -S Hello.i -o Hello
ubuntu@ubuntu-virtual-machine:~/wx/Hello$ g++ -c Hello.cxx
ubuntu@ubuntu-virtual-machine:~/wx/Hello$ g++ -E -o Hello.i Hello.cxx
ubuntu@ubuntu-virtual-machine:~/wx/Hello$ g++ Hello.o -o Hello -I ACE
ubuntu@ubuntu-virtual-machine:~/wx/Hello$ Hello.exe
Hello.exe: command not found
ubuntu@ubuntu-virtual-machine:~/wx/Hello$ ./Hello
Hello World!!
ubuntu@ubuntu-virtual-machine:~/wx/Hello$
2.(1)静态链接库:
ubuntu@ubuntu-virtual-machine:~$ cd wx/vec1
ubuntu@ubuntu-virtual-machine:~/wx/vec1$ make
g++ -c vector.cxx -o vector.o
g++ vector.o -o vector.exe
ubuntu@ubuntu-virtual-machine:~/wx/vec1$ ./vector.exe
(2)动态链接库
ubuntu@ubuntu-virtual-machine:~$ cd wx/vec2
ubuntu@ubuntu-virtual-machine:~/wx/vec2$ make
g++ -DDLLBUILD -c vector.cxx -o vector.o
g++ -shared -o libvector.so vector.o
g++ vector.o -o vector.exe
ubuntu@ubuntu-virtual-machine:~/wx/vec2$ ./vector.exe
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;
}
ubuntu@ubuntu-virtual-machine:~$ cd wx/Hello
ubuntu@ubuntu-virtual-machine:~/wx/Hello$ g++ -E -o Hello.i Hello.cxx
ubuntu@ubuntu-virtual-machine:~/wx/Hello$ g++ -S Hello.i -o Hello
ubuntu@ubuntu-virtual-machine:~/wx/Hello$ g++ -c Hello.cxx
ubuntu@ubuntu-virtual-machine:~/wx/Hello$ g++ -E -o Hello.i Hello.cxx
ubuntu@ubuntu-virtual-machine:~/wx/Hello$ g++ Hello.o -o Hello -I ACE
ubuntu@ubuntu-virtual-machine:~/wx/Hello$ Hello.exe
Hello.exe: command not found
ubuntu@ubuntu-virtual-machine:~/wx/Hello$ ./Hello
Hello World!!
ubuntu@ubuntu-virtual-machine:~/wx/Hello$
2.(1)静态链接库:
ubuntu@ubuntu-virtual-machine:~$ cd wx/vec1
ubuntu@ubuntu-virtual-machine:~/wx/vec1$ make
g++ -c vector.cxx -o vector.o
g++ vector.o -o vector.exe
ubuntu@ubuntu-virtual-machine:~/wx/vec1$ ./vector.exe
(2)动态链接库
ubuntu@ubuntu-virtual-machine:~$ cd wx/vec2
ubuntu@ubuntu-virtual-machine:~/wx/vec2$ make
g++ -DDLLBUILD -c vector.cxx -o vector.o
g++ -shared -o libvector.so vector.o
g++ vector.o -o vector.exe
ubuntu@ubuntu-virtual-machine:~/wx/vec2$ ./vector.exe
相关文章推荐
- C++链接库的使用,二维向量,三维向量,Ubuntu下C++测试向量库
- C++链接库的使用,二维向量,三维向量,Ubuntu下C++测试向量库
- C++链接库的使用,二维向量,三维向量,Ubuntu下C++测试向量库
- c/c++使用VS2013连接MySQL与ubuntu下c链接mysql
- C++中使用malloc(), free()定义初始化一维、二维、三维数组
- c/c++使用VS2013连接MySQL与ubuntu下c链接mysql
- C++ builder XE动态链接库中使用STL::vector
- C++ 在堆上开辟与释放二维、三维指针
- 使用C语言实现二维,三维绘图算法(1)-透视投影
- [转]Ubuntu(Linux)使用Eclipse搭建C/C++编译环境
- [转]Ubuntu 12.04 使用Eclipse搭建C/C++编译环境
- C++的STL中向量(vector)的使用说明
- Ubuntu 12.04 使用Eclipse搭建C/C++编译环境
- Ubuntu下mysql安装与C++开发使用
- C/C++ 定义向量、赋值和使用
- Ubuntu(Linux)使用Eclipse搭建C/C++编译环境
- g++ 编译链接C++代码, 生成与使用静态库和动态库
- Ubuntu 16.04使用NASM编译时用ld链接程序出现:i386 架构于输入文件 sandbox.o 与 i386:x86-64 输出不兼容(I386 architecture in the input file sandbox.o is not compatible with i386: x86-64 output)
- ubuntu环境下使用eclipse手动配置c/c++开发环境
- C/C++ 跨平台交叉编译、静态库/动态库编译、MinGW、Cygwin、CodeBlocks使用原理及链接参数选项