#ifndef OPENPOSE_UTILITIES_STANDARD_HPP #define OPENPOSE_UTILITIES_STANDARD_HPP #include namespace op { template bool vectorsAreEqual(const std::vector& vectorA, const std::vector& vectorB) { try { if (vectorA.size() != vectorB.size()) return false; else { for (auto i = 0u ; i < vectorA.size() ; i++) if (vectorA[i] != vectorB[i]) return false; return true; } } catch (const std::exception& e) { error(e.what(), __LINE__, __FUNCTION__, __FILE__); return false; } } /** * std::vector concatenator. * Auxiliary function that concatenate std::vectors of any class type T. * It assumes basic copy (ideal for smart pointers, pointers, etc.), so note that the copy still shares the same * internal data. It will not work for element that cannot be copied. * @param vectorA First std::shared_ptr element to be concatenated. * @param vectorB Second std::shared_ptr element to be concatenated. * @return Concatenated std::vector of both vectorA and vectorB. */ template std::vector mergeVectors(const std::vector& vectorA, const std::vector& vectorB) { try { auto vectorToReturn(vectorA); for (auto& tElement : vectorB) vectorToReturn.emplace_back(tElement); return vectorToReturn; } catch (const std::exception& e) { error(e.what(), __LINE__, __FUNCTION__, __FILE__); return std::vector{}; } } } #endif // OPENPOSE_UTILITIES_STANDARD_HPP