【发布时间】:2018-08-27 00:16:07
【问题描述】:
我目前正在编写一个程序,该程序由一个字符串向量组成,该向量充满了在同一位置具有特定字母的单词。
例如,我的向量可能如下所示:
vector<string> v = { "CRYPT", "CYSTS", "WRYLY", "TRYST" };
这个想法是猜测一个字母,即在这种情况下为“Y”,程序选择向量中的第一个字符串,遍历字符串向量并保留与第一个单词相同位置的 Y在向量中。在这种情况下,程序会选择“CRYPT”。现在,我需要程序遍历字符串向量并删除与第一个单词“CRYPT”相比在某个额外位置具有该字母重复的任何单词,同时保留具有“Y”的单词在相同的确切位置除了第一个单词 place 之外,其他地方没有其他“Y”。因此,在删除任何额外的重复项并保持其他具有相同位置的字母的单词之后,我需要向量的输出看起来像这样。
vector<string> v = { "CRYPT", "TRYST" };
我正在考虑遍历向量并遍历每个字符串以遍历每个字符并进行检查,但是我无法在遍历向量时从向量中删除元素,否则会导致问题。也许将 remove_if 用于向量,但不确定如何编写谓词。任何帮助表示赞赏!谢谢!
【问题讨论】:
-
谓词只做检查。你打算如何在循环中检查它? (忽略移除的困难,专注于检查)。
-
何不尝试一下,等有实际问题再回来?
-
看看copy_if。
-
在我看来,这与其说是一个 c++ 问题,不如说它正在制定你想要的东西。 remove_if 的想法是正确的,但是您没有在 c++ 术语中指定接受哪些字符串。
-
可能是 std::find_if 获取第一个元素,然后是 std::remove_if 删除后续元素?