std::vector<std::vector调用
时间: 2023-09-16 21:09:20 浏览: 80
`std::vector<std::vector<T>>` 是一个二维动态数组,其中每个元素都是一个 `std::vector<T>`。要访问特定位置的元素,您可以使用类似于以下方式的语法:
```
std::vector<std::vector<T>> vec_2d;
vec_2d[row][col] = value;
```
其中 `row` 和 `col` 分别表示行和列的索引,`value` 表示要设置的值。请注意,您需要确保 `vec_2d` 已经足够大,以包含您想要访问的行和列。如果它不够大,您可以使用 `resize()` 函数来增加其大小:
```
int rows = 5;
int cols = 10;
std::vector<std::vector<int>> vec_2d(rows, std::vector<int>(cols));
vec_2d.resize(rows + 1); // 增加一行
vec_2d[rows].resize(cols); // 增加新行的列数
```
相关问题
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`函数时传入正确的参数类型。
编译失败的原因不是T=std::vector<int>而AliasTemplate<T>=std::vector<std::vector<int>>导致实参不匹配吗
是的,您所说的情况是可能导致编译失败的原因之一。在模板函数中,模板参数的类型必须与函数调用时提供的实参类型匹配。如果模板参数类型和实参类型不匹配,那么编译器可能会报错,编译失败。
在你提供的情况中,如果模板参数T被声明为std::vector<int>,而函数调用时提供的实参类型是std::vector<std::vector<int>>,那么编译器会认为模板参数类型和实参类型不匹配,从而导致编译失败。
解决这个问题的方法可能是将模板参数类型T声明为std::vector<std::vector<int>>,或者在函数调用时提供std::vector<int>类型的实参。如果您需要更具体的帮助,请提供更多的代码和错误信息。
阅读全文