訪問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]會產生異常