c ++ 2D vector(matrix)如何删除第n行?
c++ 2D vector(matrix) how to delete the nth row?
这是二维向量 [[1,3],[2,6],[8,10],[15,18]]
我想删除第二行 [2,6]
我尝试按照以下方式删除第一行
matrix[1].erase(intervals[1].begin(),intervals[1].end());
打印矩阵时擦除行后,我得到了
[[1,3],[],[8,10],[15,18]]
我也想去掉括号,怎么办?
删除向量向量中的“行”很容易。
例如
#include <vector>
#include <iterator>
//...
matrix.erase( std::next( std::begin( matrix ) ) );
这里有一个演示程序
#include <iostream>
#include <vector>
#include <iterator>
int main()
{
std::vector<std::vector<int>> matrix =
{
{ 1, 3 }, { 2, 6 }, { 8, 10 }, { 15, 18 }
};
for (const auto &row : matrix)
{
bool first = true;
std::cout << '[';
for (const auto &item : row)
{
if (!first)
{
std::cout << ", ";
}
else
{
first = false;
}
std::cout << item;
}
std::cout << "]\n";
}
std::cout << '\n';
matrix.erase( std::next( std::begin( matrix ) ) );
for (const auto &row : matrix)
{
bool first = true;
std::cout << '[';
for (const auto &item : row)
{
if (!first)
{
std::cout << ", ";
}
else
{
first = false;
}
std::cout << item;
}
std::cout << "]\n";
}
std::cout << '\n';
}
程序输出为
[1, 3]
[2, 6]
[8, 10]
[15, 18]
[1, 3]
[8, 10]
[15, 18]
要删除第 i 个“行”,您可以使用下面语句中显示的表达式 std::next( std::begin( matrix ), i )
matrix.erase( std::next( std::begin( matrix ), i ) );
根据您展示的内容,我认为正确的代码应该是
matrix.erase( matrix.begin()+1 );
这是二维向量 [[1,3],[2,6],[8,10],[15,18]] 我想删除第二行 [2,6] 我尝试按照以下方式删除第一行
matrix[1].erase(intervals[1].begin(),intervals[1].end());
打印矩阵时擦除行后,我得到了 [[1,3],[],[8,10],[15,18]] 我也想去掉括号,怎么办?
删除向量向量中的“行”很容易。
例如
#include <vector>
#include <iterator>
//...
matrix.erase( std::next( std::begin( matrix ) ) );
这里有一个演示程序
#include <iostream>
#include <vector>
#include <iterator>
int main()
{
std::vector<std::vector<int>> matrix =
{
{ 1, 3 }, { 2, 6 }, { 8, 10 }, { 15, 18 }
};
for (const auto &row : matrix)
{
bool first = true;
std::cout << '[';
for (const auto &item : row)
{
if (!first)
{
std::cout << ", ";
}
else
{
first = false;
}
std::cout << item;
}
std::cout << "]\n";
}
std::cout << '\n';
matrix.erase( std::next( std::begin( matrix ) ) );
for (const auto &row : matrix)
{
bool first = true;
std::cout << '[';
for (const auto &item : row)
{
if (!first)
{
std::cout << ", ";
}
else
{
first = false;
}
std::cout << item;
}
std::cout << "]\n";
}
std::cout << '\n';
}
程序输出为
[1, 3]
[2, 6]
[8, 10]
[15, 18]
[1, 3]
[8, 10]
[15, 18]
要删除第 i 个“行”,您可以使用下面语句中显示的表达式 std::next( std::begin( matrix ), i )
matrix.erase( std::next( std::begin( matrix ), i ) );
根据您展示的内容,我认为正确的代码应该是
matrix.erase( matrix.begin()+1 );