vector 及被认为是移位运算符而编译错误
**STL容器的可变长度数组,头文件#include
**1. vector
2. v.push_back(a) 将元素a插入到数组v的末尾,并增加数组长度
3. v.size() 返回数组v的长度
4. v.resize(n,m) 重新调整数组大小为n,如果n比原来的小,这删除多余的信息,如果n比原来大,则新增的部分都初始化为m,其中m也是可以省略
可以像普通数组一样使用方括号索引,比如v[2333]就可以访问对应的元素,但注意数组的大小必须小于索引,否则和访问普通数组越界一样而访问无效内存,可以使用push_back或resize成员函数来增加数组长度
**5. vector
6. v.begin()返回数组v首元素(也就是v[0])的指针(迭代器)
7. v.end() 返回数组v首元素末尾的下一个元素的指针(迭代器),,此指针有点类似于空指针,不指向任何元素
区别
**verctor
vector
另外:
v[i]和*(v.begin()+i)是一样的,都是取对应元素的值
被认为是移位运算符而编译错误:
洛谷评测错误信息
**/tmp/compiler_z06mpz4_/src: 在函数‘int main()’中: /tmp/compiler_z06mpz4_/src:8:19: 错误:在嵌套模板实参列表中应当使用‘> >’而非‘»’ vector<vector
/tmp/compiler_z06mpz4_/src:15:25: 警告:comparison of integer expressions of different signedness: ‘std::vector
::size\_type’ {aka ‘long unsigned int’} and ‘int’ [-Wsign-compare] if (locker[i].size() < j + 1) ~~~~~~~~~~~~~~~~~^~~~~~~**
错误代码:
#include<iostream>
#include<vector>
using namespace std;
int n, q, opt, i, j, k;
int main()
{
cin >> n >> q;
vector<vector<int>>locker(n + 1);
while (q--)
{
cin >> opt;
if (opt == 1)
{
cin >> i >> j >> k;
if (locker[i].size() < j + 1)
locker[i].resize(j + 1);
locker[i][j] = k;
}
else {
cin >> i >> j;
cout << locker[i][j] << endl;
}
}
return 0;
}
后面我加了一个空格,才AC
vector< vector<int> >locker(n + 1);
这是因为被认为是移位运算符而编译错误