C++ 如何迭代模板<;typename模板>;

C++ 如何迭代模板<;typename模板>;,c++,iterator,C++,Iterator,因此,我有以下模板结构 template <typename Template> struct PositionData : public Serializer::ISerializable { Template dataPosition; virtual void Serialize(Serializer::IStreamWriter& out) const { out.Write(L"dataPosition", dataPositi

因此,我有以下模板结构

template <typename Template>
struct PositionData : public Serializer::ISerializable
{   
Template dataPosition;
    virtual void Serialize(Serializer::IStreamWriter& out) const
    {
        out.Write(L"dataPosition", dataPosition);
    }
    virtual void Deserialize(Serializer::IStreamReader& in)
    {
        in.Read(L"dataPosition", dataPosition);
    }
};

PositionData<std::map<uint32, uint32> >compressedItems;
模板
struct PositionData:公共序列化程序::ISerializable
{   
模板数据位置;
虚拟空序列化(序列化程序::IStreamWriter&out)常量
{
输出。写入(L“数据位置”,数据位置);
}
虚拟空反序列化(序列化程序::IStreamReader&in)
{
读取(L“数据位置”,数据位置);
}
};
位置数据压缩;
我想为compressedItems.dataPosition创建一个迭代器,以便提取其中的值。因此,我真的不知道什么是
uint32
索引,我需要一个迭代器

如果你们能给我一个简短的解释,那就太棒了。

谢谢。

如果您要求的不仅仅是
compressedItems.dataposition.begin()
,那么您需要提供一个更详细的解释,确切地说明您的要求。你的问题完全不清楚。我试图做的基本上是通过
compressedItems
进行迭代,这是一个变量,我在其中存储std::map如果我使用运算符[],我可以得到有效的[compressedItems.dataPosition[3295]]我的问题是索引值不是线性的,所以我不能循环[I]我的问题是如何声明迭代器?对于(auto it=compressedItems.dataPosition.begin();it!=compressedItems.dataPosition.end();it++){printf(“此处\n”);}而不是使用auto?我可以根据T来做吗?在标题为迭代器的部分下。如果
T
是一个容器,您将如何引用它的迭代器<代码>T::迭代器,或者
T::常量迭代器
。现在,您所要做的就是弄清楚在这种情况下,
T
是什么。那么,这是你的期末考试:
压缩的类型是什么。dataPosition