编程日志2020/10/26

学习数据结构,尝试自己编写简单的vector模板类,能够实现向量的创建、随机访问、排序、查找、插入、删除以及去重等操作。
目前完成了类声明及构造函数析构函数的编写。编写了四种构造函数,编写user.cpp测试构造函数。

代码:
①类声明在这里插入图片描述②类方法
template
myVector::myVector(int c)
{
capacity = c;
size = 0;
elem0 = new T[capacity];
}

template
myVector::myVector(const T arr[], rank lo, rank hi)
{
copyFrom(arr, lo, hi);
}

template
myVector::myVector(const myVector& v, rank lo, rank hi)
{
copyFrom(v.elem0, lo, hi);
}

template
myVector::myVector(const myVector& v)
{
copyFrom(v.elem0, 0, v.size - 1);
}

template
void myVector::copyFrom(const T* p, rank lo, rank hi)
{
size = hi - lo;
capacity = 2 * size;
elem0 = new T[capacity];
for (int i = 0;i < size;i++)
{
elem0[i] = p[i];
}
}
③测试文件user.cpp
#include
#include"MY_VECTOR_H.h"
using std::cin;
using std::cout;
int main()
{
cout << "input n_nums: ";
int n;
cin >> n;
cout << " input elements: ";
myVector v;
for (int i = 0;i < n;i++)
{
cin >> v[i];
}
cout << "the vector contains: ";
for (int i = 0;i < n;i++)
{
cout << v[i];
}

}

bug:
1>user.obj : error LNK2019: 无法解析的外部符号 “public: __thiscall myVector::myVector(int)” (??0?$myVector@H@@QAE@H@Z),函数 _main 中引用了该符号
1>C:\Users\dell\source\repos\DSAtest\Debug\VECTOR_DIY.exe : fatal error LNK1120: 1 个无法解析的外部命令

原因
没能创建出构造函数的实体,所以无法构造对象。原因是将模板类的方法写进了cpp文件中,应该写入到头文件中。
一般的习惯是类的声明写在头文件,类方法的定义写在cpp文件。
但是对于模板类而言,类声明和类方法的定义都要写在头文件中。因为模板类以及它的函数成员都是模板,都只是为类对象的生成提供一个蓝图,不能放在实现文件中。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值