【发布时间】:2019-07-01 15:17:26
【问题描述】:
我有一个包含这种格式元素的字符串向量:$A,1,2,3,4
我想仅根据前 2 个字符 $A 删除重复的字符串。
#include <iostream>
#include <vector>
#include <algorithm>
int main(){
std::vector<std::string> vec;
vec.push_back("$A,1,2,3,4");
vec.push_back("$B,1,6,8,1");
vec.push_back("$A,1,2,5,9");
std::sort(vec.begin(), vec.end());
vec.erase(std::unique(vec.begin(), vec.end()), vec.end());
for(auto &entry: vec)
std::cout << entry << std::endl;
return 0;
}
我想在我的向量中只保留一个以$A开头的字符串,但这段代码是比较整个字符串是否唯一。
例如:如果字符串是$A...; $B...; $A...; $B...,则输出将是$A...; $B...
【问题讨论】:
-
我想我误读了这个问题。如果您有第二个以
$B开头的字符串,您是否也希望只保留其中一个字符串? -
是的,如果有第二个字符串以
$B开头,我想删除它 -
std::unordered_map<std::string, std::vector<int>>? -
如果 some_string 的第一部分已经在 vec 中,为什么不使用 vec.push_back(some_string)。
-
@Juju ... 如果您将键 ($A, $B, ...) 与值分开并使用
map或unordered_map,则检查是内置的所以如果你尝试插入一个已经存在的键,它会报告它没有插入它。
标签: c++ string vector duplicates erase