STL 和范围可读性

问题描述 投票:0回答:1

我以前编写代码的方式可以用简单的英语来阅读。

有人可以告诉我如何更好地用这些术语阅读下面的代码吗?

我的问题是,下面的代码读作“擦除所有唯一元素”,而它的作用恰恰相反。

这并不是建议以某种方式重新设计 STL 和范围,我只是好奇在这种情况下考虑/处理

std::unique
(以及其他一些方法)的一些技巧,以使本文不那么违反直觉。

如果下面的代码中没有“不”(这可能有助于理解为“不唯一”或“除了唯一”),阅读此代码的最佳方式是什么?

std::vector<T> v = …;
std::sort(v.begin(), v.end());
v.erase(std::unique(v.begin(), v.end()), v.end());

Ranges 版本在这些方面并没有更好:

std::vector<T> v = …;
std::ranges::sort(v);
std::ranges::erase(std::ranges::unique(v), v.end());
c++ stl std-ranges
1个回答
0
投票

一个非常字面的英文音译是:

“从 v 中,擦除 v 的唯一结果和 v 的结尾之间”

可以稍微按摩一下

“擦除唯一元素之后的所有内容”

© www.soinside.com 2019 - 2024. All rights reserved.