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]. 因为很可能会出现异常.

参考技术A vector::at(x)返回x位置的数据。
和【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 = &amp;myspa.at(0)是什么意思呢?

【问题讨论】:

【参考方案1】:

vector.at()函数会返回一个元素的引用,myspa_p是一个指针,那么myspa_p = &myspa.at(0)是什么意思呢?

当您返回引用时,不要将引用视为指针可以指向的不同类型/数据对象 - 只有指针 myspa_p 和向量 myspa,没有神秘的第三个“事物”。相反,将引用视为一种在原地授予对对象(此处为 myspa 的第一个元素)的访问权限的方法,而无需将其复制到任何地方。

因此,myspa.at(0) 授予对 myspa 向量内初始 Myspa 对象的直接访问权限。然后,添加一个前导 &amp; - 形成 &amp;myspa.at(0) - 只需询问该初始对象的地址 - 因此该地址可以存储在指针 myspa_p 中。

【讨论】:

【参考方案2】:

此代码编译.. 变量 myspa_p 指向向量 myspa 的第一个元素。

myspa_p 包含向量的第一个元素的左值!!

【讨论】:

以上是关于c++中vector的at函数是怎么使用啊 ?代表啥值啊?的主要内容,如果未能解决你的问题,请参考以下文章

c++ vector find 如何查找啊?语法是怎么写的?

c++请教 vector sort怎么写

C++ 里vector的使用,运行时出错,请问怎么解决??

c++中容器是啥概念啊?

C++ 结构/向量编译问题

指向 C++ 中的引用的指针