我自己的向量类
My own vector class
我正在尝试创建自己的矢量类。我想重载STL向量的基本功能。我的代码是编译后,测试它,一个消息"分割故障(核心转储是)"显示。你能告诉我哪里可以改进我的代码吗?提前感谢!
#include<iostream>
#include<fstream>
using namespace std;
class Vector
{
public:
Vector();
Vector(const Vector& vect);
~Vector();
Vector& operator =(const Vector& vect);
void insert(double element);
bool operator ==(const Vector& vect);
Vector& operator +(const Vector& vect);
Vector& operator -(const Vector& vect);
Vector& operator *(const Vector& vect);
int size();
double operator[](int num);
friend istream& operator >>(istream& input, Vector& vect);
friend ostream& operator <<(ostream& output, Vector& vect);
private:
double* data;
int num;
int max;
};
Vector:: Vector()
{
double* data = NULL;
int num = 0;
int max = 0;
}
Vector::Vector(const Vector& vect)// not sure if its correct
{
data = new double[vect.max];
memcpy(data, vect.data, sizeof(double) * vect.num);
num = vect.num;
max = vect.max;
}
Vector::~Vector()
{
if(data)
{
delete[] data;
data = 0;
}
}
void Vector:: insert(double element)
{
if(num < max)
{
*(data + num) = element;
}
else
{
double *tmp = new double[num * 2];
delete[] data;
*(data + num) = element;
max *= 2;
}
num++;
}
Vector& Vector:: operator = (const Vector& vect)// highly unlikely to be correct
{
if(this != &vect)
{
if(data)
{
delete[] data;
data = 0;
}
max = vect.max;
data = new double[max];
for(int i = 0; i < num; i++)
{
this->data[i] = vect.data[i];
}
}
return *this;
}
bool Vector:: operator ==(const Vector& vect)
{
bool isEqual = true;
if(this->num != vect.num)
{
isEqual = false;
}
for(int i = 0; i < num; i++)
{
if(this->data[i] != vect.data[i] )
{
isEqual = false;
}
}
return isEqual;
}
Vector& Vector:: operator +(const Vector& vect)
{
Vector result;
for (int i = 0; i < num; ++i)
{
result.insert(*(data + i) + *(vect.data + i));
}
return result;
}
Vector& Vector:: operator -(const Vector& vect)
{
Vector result;
for (int i = 0; i < num; ++i)
{
result.insert(*(data + i) - *(vect.data + i));
}
return result;
}
Vector& Vector::operator*(const Vector &vect)
{
Vector result;
for (int i = 0; i < num; ++i)
{
result.insert(*(data + i) * *(vect.data + i));
}
return result;
}
int Vector:: size()
{
return num;
}
double Vector::operator[](int num)
{
return *(data + num);
}
ostream &operator <<(ostream &output, Vector &vect)
{
output << "[";
for (int i = 0; i < vect.size(); ++i)
{
output << vect[i];
if (i < vect.size() - 1)
output << ",";
}
output << "]n";
return output;
}
istream &operator >>(istream &input, Vector &vect)
{
double element;
input >> element;
vect.insert(element);
return input;
}
int main()
{
Vector vec;
for (int i = 0; i < 10; ++i)
{
vec.insert(i);
}
return 0;
}
仔细查看您的insert
函数。
相关文章:
- 将值指定给向量(2D)的向量中的某个位置
- 将矩阵乘以我自己的输入的向量
- 自己的自定义向量类. 内存重新分配
- C++联系人处理程序与自己的动态模板向量类
- 如何使用新字符串而不是分配器创建自己的字符串类型向量?
- 在构造函数(C )中填写我自己的向量类
- 如何编写自己的代码来替换`sTD :: min_element`以在向量中找到最小的值
- C++我自己的函数进行向量排序
- std::istream&运算符>>和自己的向量类
- 使用自己的结构对向量进行排序
- 自己的 arduino 向量类 (c++)
- 创建我自己的向量类,很多错误
- 在元素自己的析构函数中擦除指向静态向量中元素的指针
- 自己的"Insert"方法(向量)函数模板
- 创建了我自己的向量类.可以重载流运算符,但不能按值c++打印
- 不能在标准向量中插入自己的结构,但是字符串可以
- 在Xcode IDE中初始化我自己的c++类向量
- vector std::out_of_range 在我自己的模板类中(指向列表节点的指针向量),但我不明白为什么
- 具有自己的私有可变向量
- 我自己的向量类