C++ 98中的容器初始化

you*_*you 11 c++ stl c++98

我必须使用以下规则构造一个有序容器(必须是可迭代的):

如果条件为真,则容器是{1,0},否则就是{0,1}

我有以下代码,但我发现它并不"优雅":

   vector<int> orderedSides;
   if (condition) 
   {
       orderedSides.push_back(1);
       orderedSides.push_back(0);
   }
   else            
   {
       orderedSides.push_back(0);
       orderedSides.push_back(1);
   }
Run Code Online (Sandbox Code Playgroud)

有没有更好的方法(从简洁和性能的角度来看)?

Edg*_*jān 16

你可能会实现这样的事情:

vector<int> orderedSides(2, 0);
(condition ? orderedSides.front() : orderedSides.back()) = 1;
Run Code Online (Sandbox Code Playgroud)

这比条款明确短一些.

正如下面提到的@Deduplicator,我们可能会以更简洁的方式重写第二行:

orderedSides[!condition] = 1;
Run Code Online (Sandbox Code Playgroud)

  • 我发现这段代码更难阅读,意图非常清楚.我也不喜欢bool演员,但那些只是我的观点.OP应该避免这种情况.没有投票,因为OP确实说简洁是最重要的事情,例如甚至可能是代码高尔夫? (3认同)

Ant*_*iry 5

vector<int> orderedSides;
orderedSides.push_back(condition ? 1 : 0);
orderedSides.push_back(condition ? 0 : 1);
Run Code Online (Sandbox Code Playgroud)

我认为它不是更高效,但我发现它更优雅.