相关疑难解决方法(0)

`std :: set`有什么问题?

另一个主题中,我试图解决这个问题.问题是从a中删除重复的字符std::string.

std::string s= "saaangeetha";
Run Code Online (Sandbox Code Playgroud)

由于订单并不重要,所以我s先排序,然后使用std::unique并最终调整大小以获得所需的结果:

aeghnst
Run Code Online (Sandbox Code Playgroud)

那是正确的!


现在我想做同样的事,但同时我希望字符的顺序完好无损.意思是,我想要这个输出:

sangeth
Run Code Online (Sandbox Code Playgroud)

所以我写了这个:

template<typename T>
struct is_repeated
{
    std::set<T>  unique;
    bool operator()(T c) { return !unique.insert(c).second; }
}; 
int main() {
    std::string s= "saaangeetha";
    s.erase(std::remove_if(s.begin(), s.end(), is_repeated<char>()), s.end()); 
    std::cout << s ;
}
Run Code Online (Sandbox Code Playgroud)

这给出了这个输出:

saangeth
Run Code Online (Sandbox Code Playgroud)

也就是说,a重复,但其他重复已经消失.代码有什么问题?

无论如何我改变了我的代码 :(见评论)

template<typename T>
struct is_repeated
{
    std::set<T> & unique;  //made reference!
    is_repeated(std::set<T> &s) : unique(s) {} //added line!
    bool …
Run Code Online (Sandbox Code Playgroud)

c++ string stl set remove-if

21
推荐指数
3
解决办法
1686
查看次数

如何从c ++中的列表中删除重复值?

我是c ++的新手并且遇到了问题.我正在使用列表来存储字符串值.现在我想从该字符串中删除重复的值.谁能告诉我这是怎么做到的.

任何示例代码都将非常感激.

c++

5
推荐指数
3
解决办法
2万
查看次数

如何删除重复项并在列表中只保留唯一指针?

可能重复:
如何使向量元素唯一?(删除非相邻的重复项)
从列表<int>中删除重复项

我有一些指针列表

std::list<Person*> persons;
Run Code Online (Sandbox Code Playgroud)

填写期间此列表中有重复项.如何删除重复项并保留列表中唯一的指针?

c++ stl

1
推荐指数
1
解决办法
962
查看次数

为什么list :: unique只删除C++中的连续元素?

我发现list::unique()只删除列表中的连续元素.我想知道该方法的功能是这样的.

从列表中删除重复项说明如何从列表中删除重复元素,但它不解释为什么只删除连续元素.

以下是我的测试代码:

#include <algorithm>
#include <iostream>
#include <list>
#include <string>
#include <utility>

using namespace std;

void print_message( const pair<int,string>& message )
{
    cout << message.first << " - " << message.second << endl;
}

int main( )
{
list< pair< int, string > > message;
list< pair< int, string > >::iterator ip;

message.push_back( make_pair( 1, string("Test Foo One")) );
message.push_back( make_pair( 1, string("Test Foo Two")) );
message.push_back( make_pair( 1, string("Test Foo Two")) );
message.push_back( …
Run Code Online (Sandbox Code Playgroud)

c++ generic-programming

1
推荐指数
1
解决办法
208
查看次数

标签 统计

c++ ×4

stl ×2

generic-programming ×1

remove-if ×1

set ×1

string ×1