map 동일한 키값으로, value 연속저장, vector 컨테이너 따로 저장

phoenixKim·2022년 7월 20일
0

알고리즘 기법

목록 보기
45/72
  • 왜 그런지 참고 자료가 없어서 그냥 만들어봄

관련 문제

: 백준 다이어트

map을 vector 처럼 사용하기

: 문법적으로는 됨.
이때는 insert가 사용 안되고,
왜 그런지는 모르겠찌만,,,, map으로 선언된 변수는 vector의 함수를 사용가능하게 됨....

  • 코드

map을 vector<vector<>> 로 변환하기

: 위에서는 동일한 인덱스 값에다가 push_back을 해준 형태로 되어 있음.

  • 목표
    -> 독립적인 vector 를 map에다가 동일한 인덱스 값으로 해서
    넣어보겠다.
  • 관련 문제
    : 백준의 다이어트

    왜 이걸로 접근해야 됨???
    1.multimap의 경우에는 인덱스 접근이 불가능함.
    2.중복처리를 통해 처리해야 함.

  • 관련 코드

map_1차원 vs multimap vs map_2차원

1) 멀티맵은 인덱스 접근 못함.

2) map_1차원 벡터 컨테이너를 정렬하기

3) map-2차원 벡터 넣고, 정렬하기 .
-> 관련 문제 : 백준 다이어트

#include <iostream>
using namespace std;
#include <vector>
#include <string>
#include <algorithm>
#include <map>



int main()
{
	map<int, vector<vector<int>>>m;
	vector<int>v{ -1,2,-111,888,3,4 };

	

	vector<int>v2{ 1,2,3,4,5 };
	m[1].push_back(v2);

	m[1].push_back(v);
	m[1].push_back(v);

	vector<int>v3{ -1,-88,2,1 };
	m[-2].push_back(v3);


	for (auto iter : m)
	{
		cout << "key 값은 ";
		cout << iter.first << endl;	
		//second 값은 벡터임..
		// 그리고 따로 따로임. 

		for (auto iter2 : iter.second)
		{
			cout << "value 값은 ";
			for (int i = 0; i < iter2.size(); ++i)
			{
				cout << iter2[i] << " ";
			}
			cout << endl;
		}

		cout << endl;
	}

	cout << "sort" << endl;
	sort(m[1].begin(), m[1].end());
	for (auto iter : m)
	{
		cout << "key 값은 ";
		cout << iter.first << endl;



		//second 값은 벡터임..
		// 그리고 따로 따로임. 

		for (auto iter2 : iter.second)
		{
			cout << "value 값은 ";
			for (int i = 0; i < iter2.size(); ++i)
			{
				cout << iter2[i] << " ";
			}
			cout << endl;
		}

		cout << endl;
	}
}

profile
🔥🔥🔥

0개의 댓글

관련 채용 정보