[Error] no matching function for call to 'std::vector<int>::size(int&)'
时间: 2024-05-21 07:13:50 浏览: 117
这个错误通常发生在你试图将整数作为参数传递给`std::vector<int>::size()`函数时。 `std::vector<int>::size()`函数不需要参数,它只返回该向量的元素数,因此您应该调用`my_vector.size()`而不是`my_vector.size(int)`。请检查您的代码并确保您正在正确地使用`std::vector<int>::size()`函数。
相关问题
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)); // 创建对象并添加到容器中
```
error: no matching function for call to 'std::vector<int>::erase(int)'|
这个错误的意思是你尝试从一个 vector 中删除一个整数,但是你提供的参数类型不正确。std::vector 的 erase 函数接受一个迭代器作为参数,而不是一个整数。你需要使用迭代器来删除 vector 中的元素。例如,如果你要删除 vector 中的第三个元素,你可以这样写:
```
std::vector<int> myVector = {1, 2, 3, 4};
auto it = myVector.begin() + 2; // 获取第三个元素的迭代器
myVector.erase(it); // 删除第三个元素
```
这样就可以正确删除 vector 中的元素了。