如何在 C++ 中的字符串上实现独特的功能
how to implement unique func on a string in c++
请问这里有没有人知道我们如何使用唯一函数或任何其他函数从字符串中删除重复项?
例如,如果我想将 "fdfdfddf"
变成 "df"
我写了下面的代码,但它似乎不起作用
#include <bits/stdc++.h>
using namespace std;
int main()
{
vector<int>t;
int n;
cin>>n;
string dd;
vector<string>s;
for(int i=0;i<n;i++)
{
cin>>dd;
s.push_back(dd);
sort(s[i].begin(),s[i].end());
unique(s[i].begin(),s[i].end());
cout<<s[i]<<"\n";
}
}
根据documentation,unique
:
Eliminates all except the first element from every consecutive group of equivalent elements from the range [first, last) and returns a past-the-end iterator for the new logical end of the range.
如果你想摆脱过多的元素,你必须明确地做到这一点,例如,通过调用 erase
(如文档中的示例所示):
auto last = std::unique(s[i].begin(), s[i].end());
s[i].erase(last, s[i].end());
请问这里有没有人知道我们如何使用唯一函数或任何其他函数从字符串中删除重复项?
例如,如果我想将 "fdfdfddf"
变成 "df"
我写了下面的代码,但它似乎不起作用
#include <bits/stdc++.h>
using namespace std;
int main()
{
vector<int>t;
int n;
cin>>n;
string dd;
vector<string>s;
for(int i=0;i<n;i++)
{
cin>>dd;
s.push_back(dd);
sort(s[i].begin(),s[i].end());
unique(s[i].begin(),s[i].end());
cout<<s[i]<<"\n";
}
}
根据documentation,unique
:
Eliminates all except the first element from every consecutive group of equivalent elements from the range [first, last) and returns a past-the-end iterator for the new logical end of the range.
如果你想摆脱过多的元素,你必须明确地做到这一点,例如,通过调用 erase
(如文档中的示例所示):
auto last = std::unique(s[i].begin(), s[i].end());
s[i].erase(last, s[i].end());