두 개의 벡터 "a"와 "b"가 있다고 가정하고 "a"를 정렬하려고하고 "b" 정렬 된 "a"와 같이 다시 정렬되어야합니다.두 개의 std :: vector를 하나의 std :: vector에 std :: pair로 결합하는 방법
는나는 표준의 하나의 벡터로이 두 벡터를 결합한다 :: 쌍을 나는 표준 : : 정렬을 적용 할 수 있도록 생각할 수있는 가장 논리적 인 방법은 아래 내가 기대하고 장난감 예를
std::vector<int> a(3,1);
std::vector<std::string> b(3,"hi");
std::vector<std::pair<int,std::string>> p(3);
for(int i=0;i<a.size();i++){
p.push_back(std::make_pair(std::ref(a[i]),std::ref(b[i])));
}
p[0].first = p[0].first+1;
std::cout << p[0].first << " " << a[0] << std::endl;
입니다 그것은 2를 인쇄 할 수 있지만 나는 또한
for(int i=0;i<a.size();i++){
p[i].first = std::ref(a[i]);
p[i].second = std::ref(b[i]);
}
으로 for 루프를 교체하려고 2 1.를 인쇄하지만 여전히 2 1. 내가 다시 "P"의 값을 복사 할 수 인쇄하는 "A"와 정렬 후에 "b"하지만 "a"와 "b"가 클 경우 비효율적입니다. 내가 도대체 뭘 잘못하고있는 겁니까?
제 컴파일러는 gcc 4.9.3입니다.
'std :: pair '가 잘못된 것처럼 보입니다. 'std :: pair , std :: reference_wrapper >'을 의미하지 않았습니까? –
lorro