#include <iostream>
using namespace std;
enum ErrorType
{
invalidArraySize, memoryAllocFail, indexOutOfRange
};
const char*ErrorList[]={"invalidArraySize","memoryAllocFail","indexOutOfRange"};
template <class T>
class MyVector
{
public:
MyVector(int sz=50);
MyVector(const MyVector<T>& V);
~MyVector();
MyVector& operator=(const MyVector& V);
T& operator[](int i);
operator T*(); // 实现强制类型转换 MyVector---> T*;
int Size();
void resize(int sz);
void Error(ErrorType err);
private:
T *Array;
int size;
};
template<class T>
void MyVector<T>::Error(ErrorType err)
{
cout << ErrorList[err] << endl;
exit(1);
}
template<class T>
MyVector<T>::MyVector<T>(int sz)
{
if(sz<=0)
{
Error(invalidArraySize);
}
else
{
size = sz;
Array = new T[size];
if(Array==NULL)
Error(memoryAllocFail);
}
}
template<class T>
MyVector<T>::MyVector(const MyVector<T>& V)
{
int n = V.size;
size = n;
Array = new T[n];
if(Array==NULL)
Error(memoryAllocFail);
T*org_array = Array;
T*new_array = V.Array;
while(n--)
*org_array++ = *new_array++;
}
template<class T>
MyVector<T>::~MyVector()
{
delete [] Array;
}
template<class T>
MyVector<T>& MyVector<T>::operator=(const MyVector<T>& V)
{
int n = V.size;
if(size!=n)
{
delete[] Array;
size = n;
Array = new T[size];
if(Array==NULL)
Error(memoryAllocFail);
}
T* org_Array = Array;
T* new_Array = V.Array;
while(n--)
*org_Array++ = *new_Array++;
return *this;
}
template<class T>
T& MyVector<T>::operator[](int i)
{
if(i<0 || i>=size)
Error(indexOutOfRange);
return Array[i];
}
template<class T>
MyVector<T>::operator T*()
{
return Array;
}
template<class T>
void MyVector<T>::resize(int sz)
{
if(sz<=0)
Error(invalidArraySize);
if(size == sz) return;
int n=(sz<size)?sz:size;
T* org_Array = Array;
T* new_Array = new T[sz]();
if(new_Array==NULL)
Error(memoryAllocFail);
T* tmp = new_Array;
while(n--)
*tmp++ =*org_Array++;
// *new_Array++ = *org_Array++; // 这句话无法赋值???原因是啥?
delete[] Array;
Array = new_Array;
size = sz;
}
template<class T>
int MyVector<T>::Size()
{
return size;
}
int main()
{
MyVector<int> V1(5);
for(int i=0; i<V1.Size(); i++)
cin>>V1[i];
MyVector<int> V2 = V1; // 拷贝构造函数,相当于V2(V1);
MyVector<int> V3; // 默认构造函数
V3 = V2; // 复制运算 operator=
MyVector<int> V4(V3); // 拷贝构造函数;
cout << "V2======\n";
for(int i=0; i<V2.Size(); i++)
cout << V2[i] << " ";
cout << endl;
cout << "V3======\n";
for(int i=0; i<V3.Size(); i++)
cout << V3[i] << " ";
cout << endl;
cout << "V4======\n";
for(int i=0; i<V4.Size(); i++)
cout << V4[i] << " ";
cout << endl;
V1.resize(10);
cout << "================\n";
for(int *p=V1; p<V1+10; p++)
cout << *p << endl;
return 0;
}相关推荐
高效向量相似度计算:Fast Vector Similarity Library 深度解析
Fast Vector Similarity Library 不仅适用于一般的向量相似度计算,还特别适合处理来自大语言模型(如LLMs)的文本嵌入向量。: 为获得对异常值不敏感的稳健估计器,考虑相似度估计分布的四分位范围(IQR)。: 使用选定的随机索引子集,根据所选的相似度度量计算重采样向量间的相似度。这些度量方法各具特色和适用性,为用户提供了全面的工具包,以应对不同场景下的向量相似度分析需求。函数接收一行嵌入和一个查询嵌入,应用选定的相似度度量,并返回JSON格式的结果。
【C++】my vector模拟实现
今天来模拟一下vector的基础功能,尤其是我们刷算法题常用的那些;比如什么size() begin() end() []操作符等等,实现的时候,我会先将函数的名字声明写上,先不写定义;然后再关掉所有资料和源码,纯靠自己的理解来实现一遍,这样对个人的提升应该是最大的。否则的话看着vector源码写也失去了意义,毕竟vector的内容并不复杂;最复杂的部分也不过涉及push_back的扩容机制。话不多说,开始写~
Python向量处理库:vector2d.py快速安装与应用指南
在现代计算机科学与数学应用中,向量处理库扮演着极其重要的角色。它提供了对向量进行创建、操作和计算的工具。是一个广泛使用的向量处理库,该版本支持Python3,且没有任何特定平台的依赖,非常适合于需要跨平台兼容性的项目。作为一款功能强大的库,它允许开发者以简洁直观的方式进行向量计算。无论是简单的点到点距离计算,还是复杂的向量空间变换,vector2d.py 都能够提供高效的解决方案。它的接口设计旨在最大化易用性和效率,无需深入理解底层实现细节。
【C++】STL——vector的简单介绍、vector的定义、vector的构造函数声明、vector iterator的使用
STL、vector的含义、vector的使用、vector构造函数声明、vector iterator的使用、begin + end、rbegin + rend
c++向量模板(myVector)
自己写的一个向量模板类,大家可以参考学习一下。
C++ 中自定义数组容器MyVector的实现
C++ 中自定义数组容器MyVector实现+类模板实现过程中产生的问题的详细注释
MyVector
自用,自写,防遗忘 思路从出生,到回归,然后按照应该有的函数进行书写,由于本来就是自用,与stl里面会有部分差异,但是大体一样,此过程用于熟悉vector这个动态数组的概念,可变的数组 MyVector.h 文件,里面的调用只有iostream #pragma once #include"stdafx.h" //stdafx.h里面调用了打印,用来测试跟踪内存来着,现在所有输出都已经注释...
线性表的多种实现(如:数组,向量,链表)
包括一下实现: 用定长数组实现 用可扩展数组实现 用向量实现 用链表实现
C++小例子——01 向量类myVector
用C++定义了一个向量类myVector,其包含三个成员变量(x,y,z),可通过三个分量来构造,也可通过另一个myVector对象来构造,重载操作符+、-、*、/来完成相关运算,重载赋值符=,重载输出流<<来实现输出,定义友元函数dotProduct、crossProduct、norm来计算点乘、叉乘、求模……
使用 DeepSeek 配合 即梦AI 生成视频的详细教程
访问即梦AI官网,选择“AI作图”功能,将DeepSeek生成的提示词逐条粘贴至输入框,选择适配的模型(如“通用XL Pro”)和参数(如画幅比例、风格强度)1113。“我要制作一个关于普洱茶文化的宣传视频,请设计一个30秒的脚本,包含时间轴、画面描述、文案和分镜提示词,以表格形式输出。:云南古茶树群,清晨薄雾,金色晨光,露珠特写,国风山水画质感,16:9画幅,使用Nikon D850参数模拟513。:结合DeepSeek生成的知识点脚本与即梦AI的插画风格,制作科普动画211。
采用MPU6050的手势遥控器
随着社会的发展与进步,电子产品日益更新,个人家庭迎来了越来越多的智能家电。然而,现在的智能电子设备产品的遥控器多数都是按键形的。操作繁琐不直观,学习成本大。并且对于有老人小孩的家庭,给他们的操作带来了巨大的障碍。手势遥控器是指利用简单的手势来指挥电子设备,获得便捷的操作体验。让家庭成员都可以享受科技发展带来的福利。MPU6050是一个运动传感器,内置陀螺仪,再由电子设备利用判断结果做出相应的响应即...
C++之打造my vector篇
首先,我们定义一个类my_vector,并添加必要的成员变量来存储元素和管理容量。// 指向动态数组的指针// 当前元素个数// 当前容量public:// 默认构造函数// 带初始容量的构造函数// 析构函数// 返回当前元素个数// 返回当前容量// 判断是否为空data指向存储元素的动态数组,size_记录当前元素的个数,capacity_记录当前的容量。构造函数和析构函数负责内存的分配和释放。通过实现自定义的my_vector。
RK3588多路MIPI摄像头采集与WiFi低延迟传输实战指南
本文详细介绍了基于RK3588平台实现多路MIPI摄像头同步采集并通过WiFi进行低延迟传输的完整实战方案。文章深入剖析了从V4L2驱动配置、多线程采集、环形缓冲区设计到UDP网络传输优化的核心技术,旨在帮助开发者在工业检测、智能安防等场景下构建高并发、高实时性的视频流系统,实现端到端延迟控制在100毫秒以内的目标。
【LibreCAD】 rs_vector.cpp 文件详解
实现内容:提供向量和向量集合的完整实现数学依赖:使用标准C++数学库和Qt的QPointF精度处理:包含各种容差检查(
忍者安全渗透系统(NINJITSU OS V3)的安装详细过程,亲测新旧vm版本都可安装,附带下载来源
忍者安全渗透系统(NINJITSU)的安装详细过程,亲测新旧vm版本都可安装,附带下载来源
工业组态软件Intouch(单机版)入门{第二篇}
第5步:*都装好之后,需要进行测试授权是否生效,测试1:能否正常运行项目和编辑项目(能否编辑项目,取决于你的授权是否包含开发功能,如果只是单一的runtime授权,则只能运行项目,不能编辑项目)。在线第3步:点击第一个框右边的按钮,弹出文件浏览窗口,选中你的XMl授权文件,打开,然后你的授权出现在下方的列表中,勾选你的授权,然后点击Activate,等待几秒,授权就会出现在管理器页面的列表中,并且Status会显示Activated。第1步:软件安装好之后,先要配置好授权服务器。等待几秒,激活完成。
双层vector的运用细节
双层 / 多层vector运用细节
DrMOS电路仿真
将驱动电路与功率MOS集成化后既是DrMOS。把驱动芯片以及上下桥MOSFET封装在一起,这样每一相供电就有了单独的驱动芯片,并且这种高度整合的MOSFET可以通过更高的电流、发热比传统的MOSFET也小很多且更节能 自举升压同步BUCK高低侧栅驱动电路原理及仿真 ...
向量vector(1)
目录 1.1 从数组到向量 1.1.1 抽象数据类型与数据结构 1.1.2 数组 1.1.3 向量 1.2 接口 1.2.1 ADT接口 1.2.2 操作实例 1.2.3 Vector模板类 1.1 从数组到向量 1.1.1 抽象数据类型与数据结构 封装 : 将数据项与相关的操作结合为一个整体,并将其从外部的可见性划分为若干等级,从而将数据结构...
R语言TCGA数据下载避坑指南:biolinks包实战中的5个常见错误与解决方案
本文详细介绍了使用R语言的TCGAbiolinks包下载TCGA数据时常见的5个错误及其解决方案,包括安装与加载问题、查询构建参数设置、下载中断处理、数据加载格式不匹配以及版本兼容性问题。通过实战案例和代码示例,帮助生物信息学研究者高效获取TCGA数据,避免常见陷阱。
【NVIDIA-GB200-1】国内第一份生产环境实战安装配置教程,配置安装脚本,nvidia gb200配置教程-复制即用;gb200驱动安装
GB200 的高性能通信依赖。
Azure SQL Database 原生向量检索实战:基于 TypeScript 与 VECTOR()/VECTOR_DISTANCE() 的完整指南
本文以 [samples/features/vector-search](https://link.gitcode.com/i/97eeee0bdaa7494ab11c7295f9e3da09) 示例仓库为主线,系统讲解 Azure SQL Database 的原生向量检索能力:从 `VECTOR()` 数据类型与 `VECTOR_DISTANCE()` 函数的基本原理,到用 Azure Deve
ET2012新版免狗免安装绿色软件
ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,
TiXL 操作符详解:Vector3Components —— 将三维向量拆解为 X/Y/Z 单值
在 TiXL(实时动态图形创作软件)中,向量类型是连接三维空间数据与数值计算的核心桥梁。本文围绕 Lib 库 `numbers.vec3` 命名空间下的 [Vector3Components](https://link.gitcode.com/i/5b94eb8548d6adc12a9a44db9ebce434) 操作符,完整讲解其功能定位、输入输出端口、底层 C# 实现原理、与 [Vector3
廖雪峰Python教程[完整版]
廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白
TMS_WebGMaps_1.9.8.0_Full_Source
TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder
词向量word to vector通俗理解
word2vec 概述 之前使用one-hot编码来表示词向量,比如猫为(1,0,0),狗为(0,1,0),这种稀疏编码,维度大,词与词之间是孤立的,无法表示词与词之间的语义信息! word2vec就是为了解决这个问题,下图就是表示形式,我们从图中可以看到man和woman的两个词矩阵相似度更高,这种表示方法能捕捉到词与词之间的关联信息。 一个词向量是一个一维向量,将所有单词的向量按照行堆叠起来就被称为embedding矩阵,像下面一样 训练得到embedding矩阵 如何为每一个单词都生成一个这样的向
OV9734 DATASHEET,完整规格书
OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等
[深度学习NPL]word2vector总结与理解
word2vector总结与理解1. 目前成熟的Word2Vector1.1. English Pre-trained word embeddings1.2 Chinese Pre-trained word embeddings2. one_hot编码2.1. 简单对比2.2.优势分析:2.3. 缺点分析:3. 什么是word2vector?4. word2vector怎么做4.1. Skip-Gram& CBOW4.2. word2vector参考资料 1. 目前成熟的Word2Vector 1.
支持向量机(Support Vector Machine)
支持向量机,其英文名为supportvectormachine,一般简称SVM,通俗来讲,它是一种二类分类模型,其基本模型定义为特征空间上的间隔最大的线性分类器,其学习策略便是间隔最大化,最终可转化为一个凸二次规划问题的求解。
906



被折叠的 条评论
为什么被折叠?



