理解向量vector的一些实现细节

我对Unity中Quaternion * Vector3的理解 Quaternion * Vector3就是Vector3进行一次Quaternion 旋转。理论总是枯燥的,下面以实际项目代码为例,这是简化之后的部分项目代码:(c#) Vector3 directionVector = new Vector3(Input.GetAxis("Horizontal"), 0, Input.GetAxis("Vertical")); Vector3 movingD 阅读详情
#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;
}

深入解析RISC-V Vector扩展:从寄存器配置到高效向量处理 本文深入解析RISC-V Vector扩展的核心机制,从寄存器配置(VLEN、SEW、LMUL)到高效向量处理实践。详细阐述了vtype与vl寄存器的控制原理、向量元素映射规则、掩码操作实战以及通过vsetvli指令实现动态条带挖掘循环优化,旨在帮助开发者掌握RISC-V向量编程,提升计算密集型任务的执行效率。 阅读详情

相关推荐

高效向量相似度计算:Fast Vector Similarity Library 深度解析

Fast Vector Similarity Library 不仅适用于一般的向量相似度计算,还特别适合处理来自大语言模型(如LLMs)的文本嵌入向量。: 为获得对异常值不敏感的稳健估计器,考虑相似度估计分布的四分位范围(IQR)。: 使用选定的随机索引子集,根据所选的相似度度量计算重采样向量间的相似度。这些度量方法各具特色和适用性,为用户提供了全面的工具包,以应对不同场景下的向量相似度分析需求。函数接收一行嵌入和一个查询嵌入,应用选定的相似度度量,并返回JSON格式的结果。

2401_87458718的博客 906

【C++】my vector模拟实现

今天来模拟一下vector的基础功能,尤其是我们刷算法题常用的那些;比如什么size() begin() end() []操作符等等,实现的时候,我会先将函数的名字声明写上,先不写定义;然后再关掉所有资料和源码,纯靠自己的理解来实现一遍,这样对个人的提升应该是最大的。否则的话看着vector源码写也失去了意义,毕竟vector的内容并不复杂;最复杂的部分也不过涉及push_back的扩容机制。话不多说,开始写~

meeiuliuus的博客 992

Python向量处理库:vector2d.py快速安装与应用指南

在现代计算机科学与数学应用中,向量处理库扮演着极其重要的角色。它提供了对向量进行创建、操作和计算的工具。是一个广泛使用的向量处理库,该版本支持Python3,且没有任何特定平台的依赖,非常适合于需要跨平台兼容性的项目。作为一款功能强大的库,它允许开发者以简洁直观的方式进行向量计算。无论是简单的点到点距离计算,还是复杂的向量空间变换,vector2d.py 都能够提供高效的解决方案。它的接口设计旨在最大化易用性和效率,无需深入理解底层实现细节。

weixin_35794316的博客 1006

【C++】STL——vector的简单介绍、vector的定义、vector的构造函数声明、vector iterator的使用

STL、vector的含义、vector的使用、vector构造函数声明、vector iterator的使用、begin + end、rbegin + rend

Crocodile1006的博客 4749

c++向量模板(myVector)

自己写的一个向量模板类,大家可以参考学习一下。

C++ 中自定义数组容器MyVector的实现

C++ 中自定义数组容器MyVector实现+类模板实现过程中产生的问题的详细注释

MyVector

自用,自写,防遗忘 思路从出生,到回归,然后按照应该有的函数进行书写,由于本来就是自用,与stl里面会有部分差异,但是大体一样,此过程用于熟悉vector这个动态数组的概念,可变的数组 MyVector.h 文件,里面的调用只有iostream #pragma once #include"stdafx.h" //stdafx.h里面调用了打印,用来测试跟踪内存来着,现在所有输出都已经注释...

QQ1845517170的博客 926

线性表的多种实现(如:数组,向量,链表)

包括一下实现: 用定长数组实现 用可扩展数组实现 用向量实现 用链表实现

C++小例子——01 向量类myVector

用C++定义了一个向量类myVector,其包含三个成员变量(x,y,z),可通过三个分量来构造,也可通过另一个myVector对象来构造,重载操作符+、-、*、/来完成相关运算,重载赋值符=,重载输出流<<来实现输出,定义友元函数dotProduct、crossProduct、norm来计算点乘、叉乘、求模……

meiguanhua的博客 4022

使用 DeepSeek 配合 即梦AI 生成视频的详细教程

访问即梦AI官网,选择“AI作图”功能,将DeepSeek生成的提示词逐条粘贴至输入框,选择适配的模型(如“通用XL Pro”)和参数(如画幅比例、风格强度)1113。“我要制作一个关于普洱茶文化的宣传视频,请设计一个30秒的脚本,包含时间轴、画面描述、文案和分镜提示词,以表格形式输出。:云南古茶树群,清晨薄雾,金色晨光,露珠特写,国风山水画质感,16:9画幅,使用Nikon D850参数模拟513。:结合DeepSeek生成的知识点脚本与即梦AI的插画风格,制作科普动画211。

weixin_48995695的博客 3万+

采用MPU6050的手势遥控器

随着社会的发展与进步,电子产品日益更新,个人家庭迎来了越来越多的智能家电。然而,现在的智能电子设备产品的遥控器多数都是按键形的。操作繁琐不直观,学习成本大。并且对于有老人小孩的家庭,给他们的操作带来了巨大的障碍。手势遥控器是指利用简单的手势来指挥电子设备,获得便捷的操作体验。让家庭成员都可以享受科技发展带来的福利。MPU6050是一个运动传感器,内置陀螺仪,再由电子设备利用判断结果做出相应的响应即...

Sakura的博客小站 6602

C++之打造my vector篇

首先,我们定义一个类my_vector,并添加必要的成员变量来存储元素和管理容量。// 指向动态数组的指针// 当前元素个数// 当前容量public:// 默认构造函数// 带初始容量的构造函数// 析构函数// 返回当前元素个数// 返回当前容量// 判断是否为空data指向存储元素的动态数组,size_记录当前元素的个数,capacity_记录当前的容量。构造函数和析构函数负责内存的分配和释放。通过实现自定义的my_vector。

小蜗牛的珍贵百宝箱 450

RK3588多路MIPI摄像头采集与WiFi低延迟传输实战指南

本文详细介绍了基于RK3588平台实现多路MIPI摄像头同步采集并通过WiFi进行低延迟传输的完整实战方案。文章深入剖析了从V4L2驱动配置、多线程采集、环形缓冲区设计到UDP网络传输优化的核心技术,旨在帮助开发者在工业检测、智能安防等场景下构建高并发、高实时性的视频流系统,实现端到端延迟控制在100毫秒以内的目标。

tensor9flow的博客 786

【LibreCAD】 rs_vector.cpp 文件详解

实现内容:提供向量和向量集合的完整实现数学依赖:使用标准C++数学库和Qt的QPointF精度处理:包含各种容差检查(

weixin_43219667的博客 1047

忍者安全渗透系统(NINJITSU OS V3)的安装详细过程,亲测新旧vm版本都可安装,附带下载来源

忍者安全渗透系统(NINJITSU)的安装详细过程,亲测新旧vm版本都可安装,附带下载来源

1万+

工业组态软件Intouch(单机版)入门{第二篇}

第5步:*都装好之后,需要进行测试授权是否生效,测试1:能否正常运行项目和编辑项目(能否编辑项目,取决于你的授权是否包含开发功能,如果只是单一的runtime授权,则只能运行项目,不能编辑项目)。在线第3步:点击第一个框右边的按钮,弹出文件浏览窗口,选中你的XMl授权文件,打开,然后你的授权出现在下方的列表中,勾选你的授权,然后点击Activate,等待几秒,授权就会出现在管理器页面的列表中,并且Status会显示Activated。第1步:软件安装好之后,先要配置好授权服务器。等待几秒,激活完成。

weixin_41571357的博客 1万+

双层vector的运用细节

双层 / 多层vector运用细节

qq_39743377的博客 3780

DrMOS电路仿真

将驱动电路与功率MOS集成化后既是DrMOS。把驱动芯片以及上下桥MOSFET封装在一起,这样每一相供电就有了单独的驱动芯片,并且这种高度整合的MOSFET可以通过更高的电流、发热比传统的MOSFET也小很多且更节能 自举升压同步BUCK高低侧栅驱动电路原理及仿真 ...

Srambler的博客 5038

向量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  抽象数据类型与数据结构 封装  : 将数据项与相关的操作结合为一个整体,并将其从外部的可见性划分为若干等级,从而将数据结构...

qq_41074004的博客 1051

R语言TCGA数据下载避坑指南:biolinks包实战中的5个常见错误与解决方案

本文详细介绍了使用R语言的TCGAbiolinks包下载TCGA数据时常见的5个错误及其解决方案,包括安装与加载问题、查询构建参数设置、下载中断处理、数据加载格式不匹配以及版本兼容性问题。通过实战案例和代码示例,帮助生物信息学研究者高效获取TCGA数据,避免常见陷阱。

weixin_30892037的博客 84

【NVIDIA-GB200-1】国内第一份生产环境实战安装配置教程,配置安装脚本,nvidia gb200配置教程-复制即用;gb200驱动安装

GB200 的高性能通信依赖。

jundao1997的专栏 704

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

gitblog_00075的博客 439

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

TiXL 操作符详解:Vector3Components —— 将三维向量拆解为 X/Y/Z 单值

在 TiXL(实时动态图形创作软件)中,向量类型是连接三维空间数据与数值计算的核心桥梁。本文围绕 Lib 库 `numbers.vec3` 命名空间下的 [Vector3Components](https://link.gitcode.com/i/5b94eb8548d6adc12a9a44db9ebce434) 操作符,完整讲解其功能定位、输入输出端口、底层 C# 实现原理、与 [Vector3

gitblog_00239的博客 619

廖雪峰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矩阵 如何为每一个单词都生成一个这样的向

a2352159950的博客 6200

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.

Harry的博客 2428

支持向量机(Support Vector Machine)

支持向量机,其英文名为supportvectormachine,一般简称SVM,通俗来讲,它是一种二类分类模型,其基本模型定义为特征空间上的间隔最大的线性分类器,其学习策略便是间隔最大化,最终可转化为一个凸二次规划问题的求解。

weixin_55773387的博客 5251
上一篇: 冒泡--选择--插入--希尔排序
下一篇: Python_制作中文词云
FireMicrocosm
博客等级 码龄12年 261粉丝 56原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值