vector<ll>::iterator it;用这个函数把原动态数组中不为0的数传到b[n]中的代码c++
时间: 2024-03-14 07:45:59 浏览: 33
假设原动态数组为`a`,长度为`len`,目标数组为`b`,长度为`n`,其中`n >= len`,代码如下:
```c++
vector<ll>::iterator it = a.begin();
for(int i = 0; i < len; i++){
if(*it != 0){
b[i] = *it;
}
it++;
}
// 如果目标数组长度大于原数组长度,则将多余部分清零
if(n > len){
for(int i = len; i < n; i++){
b[i] = 0;
}
}
```
这段代码中,使用`vector<ll>::iterator`类型的迭代器`it`遍历原动态数组`a`,判断当前位置上是否为0,如果不为0,就将对应的数存入目标数组`b`中。如果目标数组长度大于原数组长度,则将多余部分清零,保证目标数组的长度为`n`。
相关问题
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`函数时传入正确的参数类型。
prototype for ‘void TemplateMatch::DataMatch(std::vector<LabelMatch>::iterator, int)’ does not match any in class ‘TemplateMatch’ void TemplateMatch::DataMatch(std::vector<LabelMatch>::iterator first, std::vector<LabelMatch>::iteraotr last)
这个错误提示表明函数原型与类定义中声明的函数原型不匹配,导致编译器无法找到要调用的函数。
在你的类定义中,函数`DataMatch()`的原型是`void TemplateMatch::DataMatch(std::vector<LabelMatch>::iterator, int)`,即该函数接受一个迭代器和一个整数作为参数。但是在你的函数实现中,`DataMatch()`的原型是`void TemplateMatch::DataMatch(std::vector<LabelMatch>::iterator first, std::vector<LabelMatch>::iteraotr last)`,即该函数接受两个迭代器作为参数。
因此,你需要将函数定义中的参数列表与类定义中声明的函数原型保持一致。在这个例子中,你需要将函数定义中的参数`std::vector<LabelMatch>::iteraotr last`更改为`int`类型的参数。如下所示:
```
void TemplateMatch::DataMatch(std::vector<LabelMatch>::iterator first, int n)
{
// your code here
}
```
这样做应该可以解决你遇到的问题。
阅读全文