联系C语言二维数组
vector< vector < int > > vct ;
vector<int> tmp;
tmppush_back(3);
vctpush_back(tmp);
vct[0][0]这样子访问
基本上就你的这两种方法了,
至于效率的问题,上面的答案看起来都有一定的道理,但到底哪一个对呢?或者都对?实践是检验真理的标准。测试一下就知道了。
#include <iostream>
#include <iomanip>
#include <Windowsh>
#include <vector>
#include <functional>
using namespace std;
int getbyindex(vector<int>& v)
{
//int n = vsize();
return v[vsize()-2];
}
int getbyit(vector<int>& v)
{
return (vend()-2);
}
double calltime(function<int(vector<int>&)> f,vector<int>& v)
{
LARGE_INTEGER start;
if (::QueryPerformanceCounter(&start) == FALSE)
throw "foo";
f(v);
LARGE_INTEGER end;
if (::QueryPerformanceCounter(&end) == FALSE)
throw "foo";
return static_cast<double>(endQuadPart - startQuadPart);
}
int main()
{
vector<int> v;
for(int i = 0;i<100;++i)
{
vpush_back(rand());
}
double t = calltime(getbyindex,v);
cout<<setprecision(10)<<t<<endl;
return 0;
}
大致的测试结果是,getbyindex要快一些。对于vector容器而言,采用index的方法,更加接近其实现底层——数组——的本质,自然有更快的理由。
javautilVector也实现了List接口,其描述的也是可变长度的对象数组
与ArrayList的差别:Vector是同步(线程安全)的,运行效率要低一些,主要用在多线程的环境中,而ArrayList是不同步的,适合在单线程中使用
常用方法:
public Vector() //空的向量列表,大小是10
public Object elementAt(int index) // 获取指定下标的元素
public void addElement(Object obj) //向当前的向量集合中加入一个元素
public void removeElementAt(int index) //移除指定下标处的元素
public void insertElementAt(E obj,int index) //向指定下标出插入一个元素
public boolean removeElement(Object obj) //删除下标最小的obj指定的元素
public void removeAllElements() //删除所有元素
public Object[] toArray() //组成数组
//
以上就是关于c++ 容器vector中元素是vector,怎么访问全部的内容,包括:c++ 容器vector中元素是vector,怎么访问、C++中有什么好的方法取得vector容器倒数第二个元素、Java Vector中的元素如何引用呢等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)