30 确保目标区间足够大

  • 无论何时,如果使用的算法需要指定一个目标区间,那么必须确保目标区间足够大,或者确保它会随着算法的运行而增大。
  • 要在算法执行过程中增大目标区间,请使用插入型迭代器,比如ostream_iterator或者back_inserter、front_inserter和inserter返回的迭代器。

比如下面代码会导致不确定行为:
int transmogrify(int x); //根据x生成一个新值
...
vector<int> value;
...
vector<int> results;
transform(value.begin(),value.end(),
results.end(),
transmogrify);
因为results.end()并没有对象,会导致不明确行为。

正确的做法,使用插入行迭代器(back_inserter、front_inserter和inserter),
例如:
int transmogrify(int x); //根据x生成一个新值
...
vector<int> value;
...
vector<int> results;
transform(value.begin(),value.end(),
back_inserter(results),
transmogrify);

猜你喜欢

转载自blog.csdn.net/weixin_28712713/article/details/80908752
30