问题的描述
有一个std::vector<std::vector>的二维容器,因为在ros代码中的回调函数需要不断使用,所以在一段时间后会报错,内存溢出错误,可能就是这些二维容器没有释放的问题。所以后续就想着复用这个二维容器,但是在进行清零操作的时候碰到问题
具体代码
std::vector<std::vector<int>> test;
test.resize(5, std::vector<int>(5, 0));//这个用来作初始化
// 打印清零后的容器
for (const std::vector<int>& row : test) {
for (int value : row) {
std::cout << value << ' ';
}
std::cout << '\n';
}
std::cout << "-------" << std::endl;
for (std::vector<int>& row : test) {
for (int& value : row) {
value = 1;
}
}
std::cout << "-------" << std::endl;
test.resize(5, std::vector<int>(5, 0));//想通过这行代码进行清0
std::cout << "-------" << std::endl;
for (const std::vector<int>& row : test) {
for (int value : row) {
std::cout << value << ' ';
}
std::cout << '\n';
}
结果
结果就是想通过test.resize(5, std::vector(5, 0)) 来进行清0是不行的,这个方法只能用于初始化,最后还是通过遍历的方法来清0。
用来给自己留个记录