error: no matching function for call to 'std::vector<std::vector<int> >::push_back(int*&)' 9 | result.push_back(combination);
时间: 2024-12-22 13:12:32 浏览: 6
错误提示 "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);
```
这样就可以避免原始错误了。
相关问题
error: no matching function for call to ‘std::vector<frameprocess_param>::push_back(int&)’
这个错误提示是因为你尝试将一个整数类型的值 `int&` 添加到 `std::vector<frameprocess_param>` 容器中,但是容器中存储的是 `frameprocess_param` 类型的对象,两者类型不一致,因此编译器无法匹配到对应的 `push_back` 函数。
你需要将整数类型的值转换为 `frameprocess_param` 类型的对象,然后再添加到容器中。例如:
```
int value = 10;
frameprocess_param param(value); // 假设有一个构造函数可以接受 int 类型的参数
std::vector<frameprocess_param> params;
params.push_back(param); // 将参数添加到容器中
```
或者你可以直接在 `push_back` 函数中创建 `frameprocess_param` 类型的对象:
```
int value = 10;
std::vector<frameprocess_param> params;
params.push_back(frameprocess_param(value)); // 创建对象并添加到容器中
```
template_match.cpp:14:50: error: no matching function for call to ‘TemplateMatch::ParallelMatch(std::vector<std::__cxx11::basic_string<char> >::const_iterator, std::vector<std::__cxx11::basic_string<char> >::const_iterator)’ ParallelMatch(templates.begin(), templates.end()); ^ In file included from template_match.cpp:1:0: template_match.h:13:7: note: candidate: void TemplateMatch::ParallelMatch(std::vector<std::__cxx11::basic_string<char> >::iterator, std::vector<std::__cxx11::basic_string<char> >::iterator) void ParallelMatch(std::vector<std::string>::iterator first, std::vector<std::string>::iterator last);
这个错误提示表明在你的代码中调用了一个不存在的函数。具体来说,这个函数是`TemplateMatch::ParallelMatch`,它期望接收两个`std::vector<std::string>::iterator`类型的参数,但是你传入的却是`std::vector<std::__cxx11::basic_string<char> >::const_iterator`类型的参数,因此编译器找不到匹配的函数。
解决这个问题的方法是修改`ParallelMatch`函数的参数类型,将其改为`const_iterator`类型即可。同时,你也需要确保在调用`ParallelMatch`函数时传入正确的参数类型。
阅读全文