fork(3) download
  1. #include <iostream>
  2. #include <algorithm>
  3. #include <vector>
  4. using namespace std;
  5.  
  6. template< class T >
  7. struct ColumnAdapter {
  8. ColumnAdapter( size_t column ) : m_column( column ) {}
  9. bool operator()( const std::vector< T > & left, const std::vector< T > & right ) {
  10. return left.at( m_column ) < right.at( m_column );
  11. }
  12. private:
  13. size_t m_column;
  14. };
  15.  
  16. int main() {
  17. std::vector< std::vector< int > > v = {
  18. { 2, 3, 4, 5, 6, 7 },
  19. { 1, 2, 3, 4, 5, 6 },
  20. { 20, 30, 40, 50, 60, 70 },
  21. { 2, 3, 4, 5, 6, 7 },
  22. };
  23. const size_t COLUMN = 1;
  24. auto biggest = std::max_element(std::begin(v), std::end(v), ColumnAdapter< int >( COLUMN ) );
  25. std::cout << "Max element is " << (*biggest).at( COLUMN )
  26. << " at position " << std::distance(std::begin(v), biggest) << std::endl;
  27.  
  28. auto smallest = std::min_element(std::begin(v), std::end(v), ColumnAdapter< int >( COLUMN ) );
  29. std::cout << "min element is " << (*smallest).at( COLUMN )
  30. << " at position " << std::distance(std::begin(v), smallest) << std::endl;
  31. return 0;
  32. }
Success #stdin #stdout 0s 3432KB
stdin
Standard input is empty
stdout
Max element is 30 at position 2
min element is 2 at position 1