#include<stdio.h>
#include<map>
using namespace std;
typedef map<int,char*> Container;
typedef pair<int,char *> Element;
int main()
{
Container container;
for (int nIndex=0;nIndex < 10;nIndex ++){
char *p = new char[16];
sprintf(p,"element %d \0",nIndex);
Element element(nIndex,p);
container.insert(element);
}
Container::const_iterator ptr;
ptr = container.find(1);
if(ptr != container.end()){
printf("find key 1 \n");
}
printf("--------------------------------------\n");
Container::iterator begin = container.begin();
while(begin != container.end())
{
printf("%d element value :%s\n",(*begin).first,(*begin).second);
//delete [] (*begin).second;
//(*begin).second = NULL;
begin++;
}
printf("--------------------------------------\n");
char *p = new char[16];
sprintf(p,"element %d \0",1000);
Element element(10,p);
container.insert(element);
begin = container.begin();
while(begin != container.end())
{
printf("%d element value :%s\n",(*begin).first,(*begin).second);
delete [] (*begin).second;
(*begin).second = NULL;
begin++;
}
return 0;
}
find key 1
--------------------------------------
0 element value :element 0
1 element value :element 1
2 element value :element 2
3 element value :element 3
4 element value :element 4
5 element value :element 5
6 element value :element 6
7 element value :element 7
8 element value :element 8
9 element value :element 9
--------------------------------------
0 element value :element 0
1 element value :element 1
2 element value :element 2
3 element value :element 3
4 element value :element 4
5 element value :element 5
6 element value :element 6
7 element value :element 7
8 element value :element 8
9 element value :element 9
10 element value :element 1000
说明:以下写法错误
//std::map<std::pair<std::string,std::string>, int> edMap;
//std::pair<std::string,std::string> key;
//edMap.insert(key,d);
正确写法如下:
typedef std::pair<std::string, std::string> my_key_type;
typedef std::map<my_key_type, int> my_map_type;
my_map_type m;
m.insert(my_map_type::value_type(my_key_type("A", "B"), 43));
//m.insert(std::make_pair(my_key_type("C", "D"), -5));
#include<iostream>
#include<vector>
template <typename T1, typename T2>
bool pair_comp_second_rev(const std::pair<T1, T2> &a,
const std::pair<T1, T2> &b) {
return a.second > b.second;
}
int main(){
const std::vector<double> prob_step = {11.0,22.0,33.0,44.0,55.0,66.0};
std::vector<std::pair<int, float>> prob_idx;
for (size_t i = 0; i < prob_step.size(); ++i) {
prob_idx.push_back(std::pair<int, double>(i, prob_step[i]));
}
prob_idx.push_back(std::pair<int, double>(1, 33));
prob_idx.push_back(std::pair<int, double>(1, 22));
for (size_t i = 0; i < prob_idx.size();++i) {
std::cout << prob_idx[i].first << std::endl;
std::cout << prob_idx[i].second << std::endl;
std::cout << "------------------------" << std::endl;
}
std::cout << "*******************************************" << std::endl;
std::sort(prob_idx.begin(), prob_idx.end(), pair_comp_second_rev<int, double>);
std::vector<std::pair<int, double> > tt = std::vector<std::pair<int, double> >(prob_idx.begin(), prob_idx.begin() + 3);
for (size_t i = 0; i < tt.size();++i) {
std::cout << tt[i].first << std::endl;
std::cout << tt[i].second << std::endl;
std::cout << "------------------------" << std::endl;
}
return 0;
}
0
11
------------------------
1
22
------------------------
2
33
------------------------
3
44
------------------------
4
55
------------------------
5
66
------------------------
1
33
------------------------
1
22
------------------------
*******************************************
5
66
------------------------
4
55
------------------------
3
44
------------------------