删除字符串向量中前 2 个字符的重复项
Erase duplicate of first 2 char in vector of strings
我有一个包含以下格式元素的字符串向量:$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...
使用正确的谓词(与带排序的谓词兼容),例如:
vec.erase(std::unique(vec.begin(), vec.end(),
[](const std::string& lhs, const std::string& rhs){
return lhs.substr(0, 2) == rhs.substr(0, 2);
}),
vec.end());
我有一个包含以下格式元素的字符串向量:$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...
使用正确的谓词(与带排序的谓词兼容),例如:
vec.erase(std::unique(vec.begin(), vec.end(),
[](const std::string& lhs, const std::string& rhs){
return lhs.substr(0, 2) == rhs.substr(0, 2);
}),
vec.end());