error: no matching function for call to 'std::vector<int>::erase(int)'|
时间: 2024-01-21 12:04:49 浏览: 233
这个错误的意思是你尝试从一个 vector 中删除一个整数,但是你提供的参数类型不正确。std::vector 的 erase 函数接受一个迭代器作为参数,而不是一个整数。你需要使用迭代器来删除 vector 中的元素。例如,如果你要删除 vector 中的第三个元素,你可以这样写:
```
std::vector<int> myVector = {1, 2, 3, 4};
auto it = myVector.begin() + 2; // 获取第三个元素的迭代器
myVector.erase(it); // 删除第三个元素
```
这样就可以正确删除 vector 中的元素了。
相关问题
error: no matching function for call to ‘drawMatches(cv::Mat&, std::vector<std::vector<cv::KeyPoint> >&, cv::Mat&, std::vector<std::vector<cv::KeyPoint> >&, std::vector<cv::DMatch>&, cv::Mat&)’
这个错误通常是因为 `cv::drawMatches` 函数的参数类型不匹配导致的。你需要检查以下几点:
1. 检查 `cv::drawMatches` 函数的参数类型是否正确,尤其是输入图像的类型是否正确(比如是 `CV_8UC1` 还是 `CV_8UC3`)。
2. 检查输入的关键点和匹配对是否正确。确保它们被正确地传递给了 `cv::drawMatches` 函数。
3. 检查 OpenCV 版本是否正确。有些版本的 OpenCV 可能不支持某些函数或参数。
如果以上方法都不起作用,你可以尝试在 OpenCV 官方文档中查找更多信息,或者尝试与 OpenCV 社区寻求帮助。
error: no matching function for call to 'std::vector<std::vector<int> >::push_back(int*&)' 9 | result.push_back(combination);
错误提示 "error: no matching function for call to 'std::vector<std::vector<int>>::push_back(int*&)'”表示在尝试将一个指向整型数组的引用(`int*&`)压入一个二维向量(`std::vector<std::vector<int>>`)时,编译器找不到合适的插入函数。`push_back`通常用于添加元素,而不是元素的引用。
在这个上下文中,看起来`combination`是一个包含整数的数组,并不是另一个可以存储数组的容器,所以直接推送到二维向量里是不允许的。解决这个问题,你需要先创建一个临时的一维`std::vector<int>`来存储`combination`的所有元素,然后再将其压入二维向量中。正确的做法可能是这样的:
```cpp
std::vector<int> tempCombination;
for (int value : combination) {
tempCombination.push_back(value);
}
// 然后再将 tempCombination 添加到 result 中
result.push_back(tempCombination);
```
这样就可以避免原始错误了。
阅读全文