나는 다음과 같은 코드를 가지고 :중첩지도 반복자
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을 구현해야합니다.
내 디자인 전략은 이것이다 : 는 풍속, 시간 등 모든 요소를 포함 객체 WindData의 벡터를 포함 일 의 BST를 포함 개월 의지도를 포함 년 의지도를 가지고, 방사선 등
우선, 이것을 설정하는 것이 가장 좋은 방법입니까? 나는이 단계에서 대안을 정말로 생각할 수 없다.
하지만 난 여기 실행 해요 내 주요 문제는 실제로 중첩 된지도를 통해 반복하는 방법이다, 나는이 코드이 모두 매우 부피가 큰 추한 느린
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.
감사 : 그러나
, AAA 당신의 시간과 노력을 절약 할 수! 이것은 효과가있다! 이러한 데이터 구조를 설정 한 방법에 대한 제안 사항이 있습니까? 이 작업에는 일간 월간지도의 BST와 매일 BST의 벡터가 포함됩니까? –디자인이 IMO로 손상되었습니다. 너무 많은 중첩 된지도가 최상의 옵션이 아닙니다. 더 나은 방법에 대해 생각해야합니다. –
나는 약 2 주 동안이 작업을 수행하는 방법을 생각 해왔다.이 데이터를 저장하기 위해 BST와 Map을 모두 사용하는 논리적으로 생각해 볼 수있는 유일한 해결책이다. –