2012-05-14 6 views
-1

저는 C++을 처음 사용합니다. 나는 list에서 map으로 C++로 복사하는 법을 알아야한다. 코드 샘플은 훌륭합니다. copylistmap A의 직접 호환되지 않습니다으로C++에서지도로 목록 복사

+1

목록에 어떤 데이터가 있습니까? – besworland

+0

std :: vector와 std :: map을 의미합니까? – Nick

+2

이 두 데이터 구조는 두 가지 목적으로 사용됩니다. 당신은 우리에게 당신의 전달 기능을 말해야합니다. – user7116

답변

1

당신은 소스 list 및 대상 map에 대한 copy을 사용할 수 없습니다.

+3

그리고 무엇을 복사하겠습니까? 열쇠, 가치, KVP? – Nick

+0

이 작업을 수행 하시겠습니까? – besworland

+0

내 대답을 쓴 후에 질문을 편집했습니다 .. – iyasar

3

std::map은 키 - 값 쌍을 보유하는 연관 컨테이너입니다. std::list은 값만 보유합니다. 따라서 목록에 올바른 유형의 키 - 값 쌍이 포함되어 있지 않으면 질문이 이해가되지 않습니다. 목록 대상 맵의 값 유형을 일치 std::pairs를 포함 할 일이

경우, 반복자 생성자를 사용하여지도를 초기화 할 수 있습니다 :

std::list<std::pair<std::string, int>> = ....; 
std::map<std::string, int> m(l.begin(), l.end()); 

또는이었다 당신은 std::copy 알고리즘을 사용할 수 있습니다

std::map<std::string, int> m1; 
std::copy(l.begin(), l.end(), std::inserter(m1, m1.begin())); 

를하지만지도가 동일한 키 값을 보유 할 수 없기 때문에 "복사는"당신이 기대하는 일을 할 수 없습니다 점에 유의 : 다른 제안했다.

+1

답변과 댓글이 아닌 방법은 무엇입니까? – Nick

+1

@Nick : Q : "복사하는 방법", A : "의미 없다, 의미 론적으로" – Vlad

+2

@Vlad : "Yes way", 목록에 쌍이 있으면. 이와 같이, 더 많은 맥락이 주어지면, 질문은 * 이해할 수 있습니다. – Xeo

0

목록 클래스는 이름에서 알 수 있듯이 개체 목록입니다. 그러나지도는 쌍의 목록입니다. 따라서 과일 "사과", "배", "수박"의 목록이 있다면지도에 넣을 수 있지만, 뭔가지도에 표시해야합니다 (의미있는 의미가 있음).

예 :

map<string, string> mapFruits; 
mapFruits["apple"] = "red"; 
mapFruits["pear"] = "yellow"; 
mapFruits["watermelon"] = "green"; 

생성자 사용할 수 있습니다
3

:

std::list<std::pair<int, std::string>> thelist = /* ... */ ; 
std::map<int, std::string> themap(thelist.begin(), thelist.end()); 

귀하의 목록에있는지도에 적합한 키 - 값 쌍을 포함 할 필요가 있습니다.

+0

+1, 이것은 적어도 질문에서 추가 컨텍스트없이 list-> map이 가능할 수있는 유일한 방법입니다. – Flexo

+3

질문의 맥락에서 나는 개인적으로 목록에 실제로 kvp가 포함되어 있는지 의심 스럽다. – Vlad

+0

@awoodland는 "이해하기"의 정의에 따라 다릅니다. 목록에 중복이 포함될 수 있으며지도에 중복 키가 포함될 수 없으므로 "복사"를주의해서 수행해야합니다. – juanchopanza

0

목록에서 값을 출력하는 방법과지도에 값을 추가하는 방법에 대한 많은 예제가 온라인에 있습니다. 그래서 나는 그것을 여기서 반복하지 않을 것이다. (이 차의 모든 사람의 컵이 아니다 있습니다.) cplusplus.com 봐

경고 : 1이없는 당신이 찾을 수 있도록지도는 고유 키 입력 값을 저장합니다 :지도 항목 사이 1 매핑하여 목록 항목 (즉,지도에서 같거나 적은 수를 얻을 수 있습니다.) 그래서 먼저 각 컨테이너를 사용하는 이유를 명확히하십시오.

관련 문제