
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:财富值不多了,请见谅! 展开
int count = DataVectorList.size();//如果count=3,是什么样的数据?怎么存储的?
如果想将DataVectorList[ 0 ]或者DataVectorList[ 1 ]的内容读出来写到文件里,该如何操作?
请各位大神帮个忙,万分感谢!!! PS:财富值不多了,请见谅! 展开
2个回答
展开全部
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];
展开全部
定义了一个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++)
{
//进行写文件操作
}
}
}
一共有三重。
读的话,需要三重循环
先是遍历 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++)
{
//进行写文件操作
}
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询