c++里面的2维向量是啥意思????
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c++里面的2维向量是啥意思????相关的知识,希望对你有一定的参考价值。
我看到有段代码是在main函数直接写 vector<int> s;定义s向量时可以不声明它的元素个数吗?比如这样 vector<int> s(10)。
另外我看到定义函数时这样写
void swap(vector<int>& a,vector<int>& b)
vector<int> temp=a;a=b;b=temp; 这里的vector<int>& a是声明意思?&不是取址符吗?为什么定义时要加上&?
最后求2维向量的解释。。。
LZ犯了一个很明显的错误:把C++当C来看。其实二者差很多,要用全新的思维来学习。
void swap(vector<int>& a,vector<int>& b)
这个地方的&是引用声明。不是求地址。
表明传入的参数是按地址传递,而不是按值传递。
向量就是一个封装得很好的数组容器。
至于vector是什么,怎么用,找本介绍STL的书看看吧。
学C++至少要搞懂这些:
1、OOP
2、泛型编程
3、函数/操作符重载
(这也是其和C区别最大的地方,特别是前两项,几乎可以颠覆你在学C中打下的思想基础) 参考技术A 定义vector容器时当然可以不声明它的元素个数!
vector<int> & 表示这是一个引用,就像C语言中的指针变量差不多,也可以在swap()函数中改变传入的实参值。但是引用比指针更安全。
所以2维vector就像二维数组一样,事实上,你完全可以像理解二维数组那样理解2维vector. 参考技术B 可以不声明向量的个数,但只能用push_back()一个一个添加数据.
void swap(vector<int>& a,vector<int>& b) 的& 在这不是取地址 是C++里的一种传值方式(传引用) 当待传递的变量为复杂数据类型时它的效率比传值高,因为它不需调用构造函数.
2维向量 就像2维数组
“通过向量的最大值对向量进行归一化”是啥意思?
【中文标题】“通过向量的最大值对向量进行归一化”是啥意思?【英文标题】:What does it mean that " normalize a vector by the maximal value of it"?“通过向量的最大值对向量进行归一化”是什么意思? 【发布时间】:2015-03-07 07:21:37 【问题描述】:假设有一个向量 H ,剂量“通过它的最大值对向量进行归一化”意味着 H/max(H)? H 中的每个元素除以 H 的最大值?
【问题讨论】:
【参考方案1】:您将向量的每个元素除以向量的最大值,这样如果存在负值,每个值都落在[0, 1]
或[-1, 1]
范围内。它通常用于与统计相关的东西。
你是对的,它是H / max(H)
,如果你要处理超过 1 个维度(如二维数组),它是
H / max(H(:))
编辑:正如 MHH 在 cmets 中指出的那样,如果您的任何值为负数,则除以 max(abs(H))
。
【讨论】:
这是假设所有值都是正数。如果向量有负值,通常你会做 H/max(abs(H)) 如果向量全为零或恰好包含Inf
或NaN
,请小心。
感谢您的回答,真的很有帮助!
为了避免0/0(如果整个向量为零),最好是(H/(max(abs(H))+eps))
。
@ParagSChandakkar:这可行,但我认为没有必要在某些情况下引入小的数值偏差,以便能够将所有内容放在一行代码中。我认为更好的方法是:v=H/max(abs(H(:)));
v(isnan(v))=0;
。如果向量包含Inf
,您可能仍然需要一个案例 - 并根据无穷大表示的内容确定在这种情况下您希望如何规范化。以上是关于c++里面的2维向量是啥意思????的主要内容,如果未能解决你的问题,请参考以下文章