min_size.h 825 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. #ifndef IGL_MIN_SIZE_H
  2. #define IGL_MIN_SIZE_H
  3. #include <vector>
  4. namespace igl
  5. {
  6. // Determine min size of lists in a vector
  7. // Template:
  8. // T some list type object that implements .size()
  9. // Inputs:
  10. // V vector of list types T
  11. // Returns min .size() found in V, returns -1 if V is empty
  12. template <typename T>
  13. inline int min_size(const std::vector<T> & V);
  14. }
  15. // Implementation
  16. template <typename T>
  17. inline int igl::min_size(const std::vector<T> & V)
  18. {
  19. int min_size = -1;
  20. for(
  21. typename std::vector<T>::const_iterator iter = V.begin();
  22. iter != V.end();
  23. iter++)
  24. {
  25. int size = (int)iter->size();
  26. // have to handle base case
  27. if(min_size == -1)
  28. {
  29. min_size = size;
  30. }else{
  31. min_size = (min_size < size ? min_size : size);
  32. }
  33. }
  34. return min_size;
  35. }
  36. #endif