如何使用for循环通过索引从矢量中擦除元素?我得到一个超出范围错误的向量.我在下面有一个示例代码.
vector<int> to_erase = {0, 1, 2};
vector<int> data = {3, 3, 3, 3};
for(int i = 0; i < to_erase.size(); i++) {
data.erase(data.begin() + to_erase[i]);
}
Run Code Online (Sandbox Code Playgroud)
我认为这是因为我的向量的大小在每次迭代时都会减少,因此它无法访问索引2.
我理解基本如何struct在C++中工作,如下例所示:
struct Options
{
int num_particles;
bool use_lbp;
string infile;
string outfile;
};
Run Code Online (Sandbox Code Playgroud)
但是,我不明白以下内容,在声明中还有一个附加部分.目的是Options():...什么?
struct Options
{
Options()
:num_particles(NUM_PARTICLES),
use_lbp(false),
infile(),
outfile()
{}
int num_particles;
bool use_lbp;
string infile;
string outfile;
};
Run Code Online (Sandbox Code Playgroud)
这与下面的代码中的内容类似吗?
struct State_
{
State_( State pp ) : p( pp ) { }
operator State() { return p; }
State p;
};
Run Code Online (Sandbox Code Playgroud)