【发布时间】:2017-04-10 00:09:19
【问题描述】:
我已经阅读了一些 stackoverflow 问题,这些问题在函数调用中发布或预递增变量会导致未定义的行为。
既然在向量中,数组元素访问操作符operator[]()是一个函数调用,下面的代码示例也是这样吗?
double p_step = 1.0 / (double)_progress_bar_chars.size();
int ixx = 0;
for(double p = 0.0; p < 1.0; p += p_step)
_progress_bar_chars[ixx ++] = (p <= progress ? '=' : ' ');
上面的代码会产生未定义的行为吗?
供参考:
std::vector<char> _progress_bar_chars;
_progress_bar_chars.resize(50);
double progress = 0.5;
最后,我在这里使用 std::vector 而不是纯数组或堆分配数组是否重要?
【问题讨论】:
-
这样使用不会导致未定义的行为,也许this page可以帮助你更多
-
由于
_progress_bar_chars[ixx ++]与_progress_bar_chars.operator[](ixx ++)相同,我会说这个问题可能与stackoverflow.com/questions/598148/… 重复
标签: c++ vector undefined-behavior post-increment