aboutsummaryrefslogtreecommitdiff
path: root/challenge-040/ulrich-rieke/cpp/ch-2.cpp
blob: 9e8cf8c589f1ee5caeca33832bbdd7d5fe55cc3c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include <vector>
#include <iostream>
#include <algorithm>

void  reorderList( std::vector<int> & numbers ,
      std::vector<int> & indices ) {
  std::vector<int> sublist ;
  for ( int i : indices ) {
      sublist.push_back( numbers[ i ] ) ;
  }
  std::sort( indices.begin( ) , indices.end( ) ) ;
  std::sort( sublist.begin( ) , sublist.end( ) ) ;
  for ( int i = 0 ; i < indices.size( ) ; i++ ) {
      numbers[ indices[ i ]] = sublist[ i ] ;
  }
}

int main( ) {
  std::vector<int> numbers { 10 , 4 , 1 , 8 , 12 , 3 } ;
  std::vector<int> indices { 0 , 2 , 5 } ;
  reorderList( numbers , indices ) ;
  for ( int i : numbers )
      std::cout << i << ' ' ;
  std::cout << std::endl ;
  return 0 ;
}