相关疑难解决方法(0)

从列表<int>中删除重复项

使用STL算法(尽可能多),例如remove_if()list::erase,有一种很好的方法可以从定义如下的列表中删除重复项:

list<int> l;

请注意,list::unique()仅当连续元素中出现重复时才有效.就我而言,无论在列表中的位置如何,都必须删除所有重复项.此外,删除重复意味着在最终结果中仅保留每个元素的一个副本.

编辑:l.sort()后面的选项l.unique()无法使用,因为这将破坏列表的顺序.

c++ stl

6
推荐指数
3
解决办法
9844
查看次数

取消引用后调用函数的函子?

C++ 标准或 Boost 中是否有一个小函子包装另一个函子,但在调用该函子之前取消引用指针?

我在想这样的事情:

template<class F>
struct DerefCmp {
  template<class T>
  bool operator()(T* v) const {
    return F(*v);
  }
};
Run Code Online (Sandbox Code Playgroud)

例如,我会在指针容器中使用它,我想按值进行比较:

std::set<int*, DerefCmp< std::equal<int> > > s;
Run Code Online (Sandbox Code Playgroud)

c++ stl

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

字符数组排序和删除重复项

我正在尝试做一些数组操作.我在这里做char数组排序和重复删除.欢迎您的意见.尽管如此,还没有做过很多测试和错误处理.

#include<stdafx.h>
#include<stdlib.h>
#include<stdio.h>
#include<string>
using namespace std;

void sort(char *& arr)
{
    char temp;
    for(int i=0;i<strlen(arr);i++)
    {
        for(int j=i+1;j<strlen(arr);j++)
        {
            if(arr[i] > arr[j])
            {
            temp = arr[i];
            arr[i] = arr[j];
            arr[j] = temp;
            }
        }
    }

}
bool ispresent(char *uniqueArr, char * arr)
{
    bool isfound = false;
    for(int i=0;i<strlen(arr);i++)
    {
    for(int j=0;j<=strlen(uniqueArr);j++)
    {
        if(arr[i]== uniqueArr[j])
        {
        isfound = true;
        return isfound;
        }
        else
        isfound = false;
    }
    }

    return isfound;
}

char * removeduplicates(char *&arr)
{
    char * …
Run Code Online (Sandbox Code Playgroud)

c++ arrays

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

标签 统计

c++ ×3

stl ×2

arrays ×1