【问题标题】:Can an if statement be written in any other way?if 语句可以用任何其他方式编写吗?
【发布时间】:2020-11-25 13:13:45
【问题描述】:

好吧,我正在浏览一些代码,发现了这段代码,对语句 1 感到困惑。

vector<int> v{1,2,3,2};   
mp<int,int> m;
for(auto i : v) m[i]++;
int ans = v.size();
for(auto i : v){
    ans = min(ans, m[i] + 1 - (v.front() == i) - (v.back() == i)); //statement 1
    }

语句 1 背后的逻辑是 如果 v 在前面或末尾包含元素 i,则从 map 中出现的 i 中减去 1。 它以某种方式正常工作,但如何?我以前没有见过这种类型的 if 实现。如果考虑 (v.front() == i) 和 (v.back() == i) 作为 if 语句而不提及任何 if 关键字,有人可以帮助如何声明 1。

【问题讨论】:

    标签: c++ vector stl


    【解决方案1】:

    表达式v.front() == i 的计算结果为bool,即truefalse

    bool 可以隐式转换为值为10int

    这与执行if (v.front() == i) 时相同。表达式v.front() == i 又是一个布尔值truefalse

    【讨论】:

      猜你喜欢
      • 2017-10-20
      • 1970-01-01
      • 2015-03-06
      • 2020-04-12
      • 2014-12-05
      • 1970-01-01
      • 2022-10-25
      • 2020-11-09
      • 2021-06-16
      相关资源
      最近更新 更多