Python/2.7 simple coding(+ c++)

vector, hashmap,

qkqhxla1 2016. 9. 29. 12:27

1. vector의 정렬.

sort()함수는 앞자리를 보고 정렬하는걸 알수있다. 근데 함수를 선언해서 정렬할수 있다.

#include <string>
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
 
bool _reverse(pair<int ,string> a, pair<int, string> b) { return a.first > b.first; }
bool _reverse2(pair<string, int> a, pair<string, int> b) { return a.second > b.second; }

int main() 
{
	vector<pair<int, string>> v1;
	v1.push_back(make_pair(1,"abc"));	
	v1.push_back(make_pair(3,"def"));
	v1.push_back(make_pair(2,"ghi"));
	v1.push_back(make_pair(4,"jkl"));

	sort(v1.begin(), v1.end());
	for(int i=0;i<v1.size();i++)
		cout<<"v1의"<<i<<" = "<<v1[i].first<<" "<<v1[i].second<<endl;
	cout<<endl;

	sort(v1.begin(), v1.end(), _reverse);
	for(int i=0;i<v1.size();i++)
		cout<<"v1의"<<i<<" = "<<v1[i].first<<" "<<v1[i].second<<endl;
	cout<<endl;

	/////////////////////////////////////////////////////////////////////

	vector<pair<string, int>> v2;
	v2.push_back(make_pair("abc",1));	
	v2.push_back(make_pair("def",3));
	v2.push_back(make_pair("ghi",2));
	v2.push_back(make_pair("jkl",4));

	sort(v2.begin(), v2.end());
	for(int i=0;i<v2.size();i++)
		cout<<"v2의"<<i<<" = "<<v2[i].first<<" "<<v2[i].second<<endl;
	cout<<endl;

	sort(v2.begin(), v2.end(), _reverse2);
	for(int i=0;i<v2.size();i++)
		cout<<"v2의"<<i<<" = "<<v2[i].first<<" "<<v2[i].second<<endl;
    return 0;
}

2. 중첩벡터.


벡터안의 벡터에 인자를 넣으려면 아래처럼 새로 벡터를 선언후, 그안에 인자를 넣고


그 새 벡터를 넣어야 된다.

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

int main() 
{
	vector<pair<int, vector<string>>> p1;
	
	for(int k=0;k<10;k++) //k번째 손님이
	{
		vector<string> temp;
		for(int i=1;i<6;i++) //상자를 1~5번까지 5개 주문했다.
			temp.push_back(to_string(5*k + i)+"번상자");

		p1.push_back(make_pair(k,temp));
	}
	for(int i=0;i<p1.size();i++)
	{
		cout<<p1[i].first<<"번째 손님이 주문한 상자 : ";
		for(int j=0;j<p1[i].second.size();j++)
			cout<<p1[i].second[j]<<" ";
		cout<<endl;
	}
    return 0;
}


2. unordered_map 출력.


unordered_map은 정렬이 불가능하다고 한다. 하려면 벡터에 넣어서 해야됨.

#include <string>
#include <iostream>
#include <unordered_map>
#include <algorithm>
using namespace std;

int main() 
{
	unordered_map<int, string> dict;
	dict[1] = "rara";
	dict[3] = "haha";
	dict[2] = "kk";

	for(auto it=dict.begin(); it!=dict.end(); it++)
		cout<<it->first<<" "<<it->second<<endl;

    return 0;
}