我有一个简单的任务,即std::vector<int>使用一系列整数初始化一个.
范围由用户给出,我尽量避免使用for循环.
就像是:
void addRange(std::vector<int>& vReturn, int nStart, int nEnd)
{
vReturn.clear();
// straightforward solution
for (int nInteger = nStart; nInteger <= nEnd; nInteger++)
{
vReturn.push_back(nInteger);
}
//////////////////////////////////////////////
// Elegent Pseudo-Code
vReturn.add_range(nStart, nEnd); // <<- is this doable?
}
Run Code Online (Sandbox Code Playgroud)
您可以使用算法iota在C++ 11中执行此操作.
vReturn.clear();
vReturn.resize((nEnd - nStart) + 1);
std::iota(vReturn.begin(), vReturn.end(), nStart);
Run Code Online (Sandbox Code Playgroud)
你也可以使用boost :: irange.
auto range = boost::irange<int>(nStart, nEnd + 1);
vReturn.assign(range.begin(), range.end());
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
268 次 |
| 最近记录: |