【发布时间】:2016-06-04 07:18:10
【问题描述】:
我有以下代码:
int main()
{
typedef std::map<int,int> monthMap;
typedef std::map<int,std::map<int, monthMap>> yearMap;
//std::ifstream inputFile("MetData-31-3.csv");
//std::ifstream inputFile("MetData_Mar01-2015-Mar01-2016-ALL.csv");
//if(!inputFile) return -1;
//readFile(inputFile, yearMap);
int year = 2011, month = 4;
yearMap ym;
monthMap mm;
ym[year][month];
yearMap::iterator yearItr = ym.find(year);
if(yearItr != ym.end())
{
//monthMap &mp = yearItr->second;
monthMap::iterator monthItr;
monthItr = (yearItr->second).find(month);
if(monthItr != yearItr->second.end())
{
std::cout << "Found!";
}
}
}
基本上我要做的是为我的项目设置基础,从包含数据中心的日期、时间、风速和辐射水平等信息的 CSV 文件中读取。
我在其他项目中将所有东西都作为矢量工作,但是我需要在项目中切换数据结构并实现 BST 和 Map。
我的设计策略是这样的: 有一张岁月图 其中包含月份的地图 其中包含天的 BST 其中包含 WindData 对象的向量 其中包含风速、时间、辐射等所有要素。
首先,这是最好的设置方式吗?在这个阶段我真的想不出替代方案。
但我在这里遇到的主要问题是如何实际迭代嵌套地图,我从这段代码中得到以下错误
D:\Projects\testProj\main.cpp|31|error: no match for 'operator=' (operand types are 'std::map<int, int>::iterator {aka std::_Rb_tree_iterator<std::pair<const int, int> >}' and 'std::map<int, std::map<int, int> >::iterator {aka std::_Rb_tree_iterator<std::pair<const int, std::map<int, int> > >}')|
对我来说,在这种类型的过程中使用这种数据结构似乎非常庞大、丑陋和缓慢,但我必须这样做,我愿意接受任何关于存储和处理这些数据的不同方法的建议我仍在使用 MAP 和 BST。
【问题讨论】:
标签: c++ csv dictionary vector binary-search-tree