如何声明模板函数,并规定可以使用的类型为cv::Point2f[4]和std::vector<cv::point2f>
时间: 2023-09-13 10:12:40 浏览: 114
要声明一个模板函数,并规定可以使用的类型为cv::Point2f[4]和std::vector<cv::Point2f>,您可以使用模板参数列表来指定这些类型。以下是一个示例:
```
#include <iostream>
#include <vector>
#include <opencv2/opencv.hpp>
template<typename T>
void printPoints(T points) {
for (auto& point : points) {
std::cout << "(" << point.x << ", " << point.y << ")" << std::endl;
}
}
int main() {
cv::Point2f points[4] = { cv::Point2f(0, 0), cv::Point2f(1, 1), cv::Point2f(2, 2), cv::Point2f(3, 3) };
std::vector<cv::Point2f> pointsVector = { cv::Point2f(0, 0), cv::Point2f(1, 1), cv::Point2f(2, 2), cv::Point2f(3, 3) };
std::cout << "Printing cv::Point2f[4]:" << std::endl;
printPoints(points);
std::cout << "Printing std::vector<cv::Point2f>:" << std::endl;
printPoints(pointsVector);
return 0;
}
```
在这个示例中,我们声明了一个名为printPoints的模板函数,它接受一个模板参数T,可以是cv::Point2f数组或std::vector<cv::Point2f>。在函数中,我们使用了一个for循环来遍历points中的每个点,并打印它们的坐标。
在主函数中,我们创建了一个cv::Point2f数组和一个std::vector<cv::Point2f>,然后分别调用了printPoints函数来打印它们的内容。
希望这个示例可以帮助您理解如何声明模板函数,并规定可以使用的类型为cv::Point2f[4]和std::vector<cv::Point2f>!
阅读全文