c++中vector的at函数是怎么使用啊 ?代表啥值啊?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c++中vector的at函数是怎么使用啊 ?代表啥值啊?相关的知识,希望对你有一定的参考价值。
at函数和[]函数使用可以说是一模一样. 都是为了访问对应index中存储的数据, 如果index大于vector的size. 两者都是抛出out_of_range的exception.
#include <iostream>#include <vector>
using namespace std;
int main ()
vector<int> myvector(10); // 10 zero-initialized ints
// assign some values:
for (size_t i = 0; i < myvector.size(); i++)
myvector.at(i) = i;
for (size_t i = 0; i < myvector.size(); i++)
cout << myvector.at(i) << ' ' << myvector[i] << endl;
//cout << myvector.at(20); // out_of_range_exception
return 0;
追问
可是这个vector里面的size的值是事先知道的么?有的是不知道的额啊
追答size可以通过size()函数获得. 例如myvector.size()返回一个int.
对vector进行的操作要有意识, 里面加了数据, 删了数据. !! 每次访问前要检查 !!.
编程的时候. 除非必须, 尽量避免直接写一个数字上去. 例如避免 v[20]. 因为很可能会出现异常.
和【x】不一样,这个函数有可能抛出out_of_range错误。 参考技术B XXX.at(idx);
传回索引idx所指的数据,如果idx越界,抛出out_of_range。 参考技术C 得到编号位置的数据追问
能举个具体的实例么?比如说这个程序什么意思啊?这里面的at函数是什么意思啊
buf_value.at(i);它会返回在第i个位置的数据,也就是Tip_Pos类型的,然后赋值给pos,然后标准输出pos.x,pos.y。
追问可是这个buf_value.at(i)里面的值又是谁给他的呢?
追答你的上边的图片里边没有这部分,可能是在其他代码部分,我又看不到。
指向 C++ 中的引用的指针
【中文标题】指向 C++ 中的引用的指针【英文标题】:the pointer to a reference in c++ 【发布时间】:2012-02-13 09:24:03 【问题描述】:我看到了一些 c++ 的代码,这让我有点困惑:
class Myspa ;
vector<Myspa> myspa;
Myspa * myspa_p;
myspa_p = &myspa.at(0);
vector.at()
函数会返回一个元素的引用,myspa_p
是一个指针,那么myspa_p = &myspa.at(0)
是什么意思呢?
【问题讨论】:
【参考方案1】:vector.at()函数会返回一个元素的引用,myspa_p是一个指针,那么myspa_p = &myspa.at(0)是什么意思呢?
当您返回引用时,不要将引用视为指针可以指向的不同类型/数据对象 - 只有指针 myspa_p
和向量 myspa
,没有神秘的第三个“事物”。相反,将引用视为一种在原地授予对对象(此处为 myspa
的第一个元素)的访问权限的方法,而无需将其复制到任何地方。
因此,myspa.at(0)
授予对 myspa
向量内初始 Myspa 对象的直接访问权限。然后,添加一个前导 &
- 形成 &myspa.at(0)
- 只需询问该初始对象的地址 - 因此该地址可以存储在指针 myspa_p
中。
【讨论】:
【参考方案2】:此代码编译.. 变量 myspa_p 指向向量 myspa 的第一个元素。
myspa_p 包含向量的第一个元素的左值!!
【讨论】:
以上是关于c++中vector的at函数是怎么使用啊 ?代表啥值啊?的主要内容,如果未能解决你的问题,请参考以下文章