小编igo*_*gor的帖子

IEqualityComparer和singleton

我想知道是否有可能使用singleton作为comparerObject,例如Distinct?

假设我有一个元素列表,我需要在该列表中使用不同的函数.通常我会这样做

var result  = list.Distinct(new ListElementComparer);
Run Code Online (Sandbox Code Playgroud)

ListElementComparer是一个实现IEqualityComparer接口的类.但是,让我们假设我将经常使用上面提到的代码,例如这种方式.

List<List<Element>> elementList = new List<List<Elements>>();
List<List<Element>> resultList  new List<List<Element>>();

foreach(var element in elementList )
   resultList.AddRange(element.Distinct(new ListElementComparer() )  );
Run Code Online (Sandbox Code Playgroud)

因此,您可以创建很多次ListElementComparer的对象.在这种情况下,在每次迭代中使用单线程创建ListElementComparer是否有任何意义?如果我使用singleton,那么distinct方法会起作用吗?

c# linq icomparer

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

为什么我不能删除向量的最后一个元素

我有由几个元素组成的stl向量.我需要迭代这个向量并删除符合某些条件的元素.所以我写了这段代码

for (int j = imageDataVector.size()-1; j >= 0; j--) {
    if(imageDataVector[i] < threshold)
        imageDataVector.erase(imageDataVector.end() - j);
}
Run Code Online (Sandbox Code Playgroud)

此代码几乎适用于所有情况,但是如果向量的所有元素都符合条件,则会出现错误:

vector erase iterator outside the range
Run Code Online (Sandbox Code Playgroud)

如果我在向量中只剩下一个元素,则会发生此错误.我做错了什么?

c++ iterator stl vector

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

访问者是否会影响应用程序的性能?

我想知道访问器的使用是否会显着影响应用程序的性能.假设我们有一个Point类,有两个私有字段.我们可以通过调用GetX()等公共函数来访问这些字段.

class Point
{
public:
    Point(void);
    double GetX();
    double GetY();
    void SetX(double x);
    void SetY(double y);

    ~Point(void);

private:
    double x,y;
};
Run Code Online (Sandbox Code Playgroud)

但是,如果我们需要获得字段xa的大量时间值(例如,如果我们处理图像),这种结构是否会影响应用程序的性能?也许将字段x和y公开会更快?

c++ performance

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

标签 统计

c++ ×2

c# ×1

icomparer ×1

iterator ×1

linq ×1

performance ×1

stl ×1

vector ×1