访问vector
A. c++ 容器vector中元素是vector,怎么访问
联系C语言二维数组
vector< vector < int > > vct ;
vector<int> tmp;
tmp.push_back(3);
vct.push_back(tmp);
vct[0][0]这样子访问
B. c++ STL里,vector 为何能用下标来访问元素
重载了下标运算符的对象。
举个例子
#include<iostream>
usingnamespacestd;
template<typenameT>
classVec{
public:
T&operator[](unsignedindex){
std::cout<<"T&Vec::operator[](unsigned)wascalled.index=="<<index<<std::endl;
returnv[index];
}
protected:
Tv[128];
};
intmain(){
Vec<int>s;
s[10]=5;
cout<<s[10]<<endl;
return0;
}
你下载下来运行一下就明白了。
C. 定义一个指向vector 指针,我怎么通过指针访问这个vector
指针访问某个结构类型中的变量的方法是 p->你要访问的变量名
D. 如何获得vector中的元素
vector的元素是连续存储的,只要获取任何一个元素的指针就可以使用指针访问vector里的每一个元素了,但是如果vector中插入或者删除元素,这个地址就有可能无效了。
解引用迭代器可以获取迭代器所指向的元素的引用,在对这个引用使用取地址运算符就可以获取该元素的内存地址。
E. C++如何随机访问vector容器元素
此处的随机是什么意思,如果是直接访问可以用[]运算符,还有一个at()方法也是访问元素的,at比[]更安全,因为越界会出错。
如果是其中任意一个数的话,用stdlib.h中的rand函数,vector.at(rand())%3)这样就行了,但是记住开始要用srand函数初始化!
F. c++ 怎样获取vector中元素的存储地址
vector的元素是连续存储的,只要获取任何一个元素的指针就可以使用指针访问vector里的每一个元素了,但是如果vector中插入或者删除元素,这个地址就有可能无效了。
解引用迭代器可以获取迭代器所指向的元素的引用,在对这个引用使用取地址运算符就可以获取该元素的内存地址。
G. c++包含类的vector的元素访问
是的。vector1大小都没有指定,如果指定大小,而且类有默认构造函数应该是不会出错的
H. C++中数组和vector的下标访问效率有区别吗
vector内部本身也是靠动态数组实现,就下标访问来说并没有什么差异
I. vector的索引访问与迭代器访问谁更快
嗯,可以用下标值:如vector a; a[i]就可以读取下标为i的元素值 或者使用迭代器 vecotr::iterator i; *i就可以读取下标注为i的元素值
J. 方括号访问vector元素
是一样的,但如果这个vector中只有两个元素,则Cities[2]会产生异常