C++ vector、list容器问题

std::list<std::vector<std::vector<float>>>DataVectorList;//这是定义了一个怎样的数据呢?数据是怎样存储的?int... std::list < std::vector< std::vector< float > > > DataVectorList ;//这是定义了一个怎样的数据呢?数据是怎样存储的?
int count = DataVectorList.size();//如果count=3,是什么样的数据?怎么存储的?
如果想将DataVectorList[ 0 ]或者DataVectorList[ 1 ]的内容读出来写到文件里,该如何操作?
请各位大神帮个忙,万分感谢!!! PS:财富值不多了,请见谅!
展开
 我来答
besthelp
2013-08-27 · TA获得超过1057个赞
知道小有建树答主
回答量:376
采纳率:100%
帮助的人:401万
展开全部
std::list < std::vector< std::vector< float > > > DataVectorList ;

拆开看就容易多了

typedef std::vector< float >   Type1;
typedef std::vector< Type1 >   Type11;
typedef std::list< Type11 >     DataVectorList;

DataVectorList:list中的每个元素是一个vector(Type11),而Type11中的每个元素也是个float的vector(Type1)

 

另外你说的DataVectorList[0]这类的访问是错误的。std::list不支持随机访问,std::vector可以

更多追问追答
追问
请问下   std::vector >   可以理解为二维数组么?
追答

额。从用法上你可以这么理解。但从内存布局上是有区别

如:

// 假设下面的arr_1和arr_2里都是被赋过值的
float arr_1[10][10]; 
std::vector< std::vector< float > >  arr_2;
float a = 0.f;
 // 语法上看确实像二维数组访问
 // 但它们内存分布有区别,而且arr_2可动态增减
a = arr_1[0][0]; 
a = arr_2[0][0];
zouadw
2013-08-27 · TA获得超过102个赞
知道答主
回答量:90
采纳率:100%
帮助的人:98.7万
展开全部
定义了一个std::list链表DataVectorList, 链表中的每一个结点又是一个std::vector向量容器,而向量容器的节点又是一个std::vector<float>容器。
一共有三重。
读的话,需要三重循环
先是遍历 list 然后遍历 std::vector 容器,最后是遍历std::vector<float>容器。

std::list < std::vector< std::vector< float > > > DataVectorList ;
std::list < std::vector< std::vector< float > > >::iterator iterList;
std::vector< std::vector< float > >::iterator iterVector;
std::vector< float >::iterator iterVectorFloat;
for (iterList=DataVectorList.begin();iterList!=DataVectorList.end();iterList++)
{
for (iterVector=iterList->begin();iterVector!=iterList->end();iterVector++)
{
for (iterVectorFloat=iterVector->begin();iterVectorFloat!=iterVector->end();iterVectorFloat++)
{
//进行写文件操作

}
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式