fork download
  1. #include <vector>
  2. #include <iostream>
  3. #include <utility>
  4. #include <boost/numeric/ublas/matrix.hpp>
  5. namespace ublas = boost::numeric::ublas;
  6. template <typename T, size_t R, size_t C>
  7. ublas::matrix<T> matrix_from_array(T (&a)[R][C])
  8. {
  9. ublas::matrix<T> ret(R, C);
  10. for(size_t r = 0; r<R; ++r)
  11. for(size_t c = 0; c<C; ++c)
  12. ret(r,c) = a[r][c];
  13. return ret;
  14. }
  15. typedef std::vector<std::pair<size_t, size_t> > posvec_t;
  16. template <typename T>
  17. posvec_t find_all(const ublas::matrix<T>& m, T val)
  18. {
  19. posvec_t ret;
  20. for(size_t r=0; r<m.size1(); ++r)
  21. for(size_t c=0; c<m.size2(); ++c)
  22. if(m(r,c) == val)
  23. ret.push_back(std::make_pair(r, c));
  24. return ret;
  25. }
  26. int main ()
  27. {
  28. int a[4][5] = {{1,2,3,4,5},
  29. {2,4,6,8,1},
  30. {1,5,4,6,8},
  31. {9,4,6,7,0}};
  32. ublas::matrix<int> m = matrix_from_array(a);
  33. posvec_t v = find_all(m, 6);
  34. for(size_t p = 0; p<v.size(); ++p)
  35. std::cout << "(" << v[p].first << ", " << v[p].second << ")\n";
  36. }
  37.  
Success #stdin #stdout 0s 2864KB
stdin
Standard input is empty
stdout
(1, 2)
(2, 3)
(3, 2)