English 中文(简体)
具有重复钥匙的ort物体
原标题:Sort objects with duplicate keys
  • 时间:2012-04-10 22:30:05
  •  标签:
  • c++
  • list

我需要一份很长的物体清单,这些物体由其中一部分重新计算。 在C++中这样做的最快方式是什么? 我需要能够添加和删除这一清单中的内容,并且仍然按这一具体参数分类。

Class Foo {
private:
  int rank;
}

我想到我的<条码>。 Foo,在添加或删除新条目时,应在“<>/>号令中注明的物体。 还可有不止一个标的<条码>。 这种关键价值是不可能的。

在C++中,我如何能够这样做? 我正在研究make_heap(),但我不肯定如何使用(或如果可以使用)物体。

最佳回答

首先,您可以界定<代码>operator< for (有些与这一条相似)。

inline bool operator< (const Foo& lhs, const Foo& rhs) {
  return lhs.rank < rhs.rank;
} 

需要宣布为<代码>的朋友 Foo

class Foo {
 public:
  explicit Foo(int rank_init) : rank(rank_init) {}
  friend bool operator< (const Foo&, const Foo&);
 private:
  int rank;
};


Now you can create a std::multiset<Foo> which will keep the Foos sorted ascending by rank, e.g.

std::multiset<Foo> foo_multiset;
foo_multiset.insert(Foo(5));  // 5
foo_multiset.insert(Foo(3));  // 3, 5
foo_multiset.insert(Foo(1));  // 1, 3, 5
foo_multiset.insert(Foo(3));  // 1, 3, 3, 5
size_t erased_count(foo_multiset.erase(Foo(3)));  // 1, 5 (erased_count == 2)

然而,在你的具体情况下,没有保证这将是“测试”的选择。 你们需要对此加以说明。 根据要素数目、插入/应用的频率以及STL执行,你可以发现,一种分类的<编码>:浏览器和设计;Foo>更适合你们的需要。

Scott Meyers Effective STL描述了如何在项目23中做到这一点。

问题回答

暂无回答




相关问题
Undefined reference

I m getting this linker error. I know a way around it, but it s bugging me because another part of the project s linking fine and it s designed almost identically. First, I have namespace LCD. Then I ...

C++ Equivalent of Tidy

Is there an equivalent to tidy for HTML code for C++? I have searched on the internet, but I find nothing but C++ wrappers for tidy, etc... I think the keyword tidy is what has me hung up. I am ...

Template Classes in C++ ... a required skill set?

I m new to C++ and am wondering how much time I should invest in learning how to implement template classes. Are they widely used in industry, or is this something I should move through quickly?

Print possible strings created from a Number

Given a 10 digit Telephone Number, we have to print all possible strings created from that. The mapping of the numbers is the one as exactly on a phone s keypad. i.e. for 1,0-> No Letter for 2->...

typedef ing STL wstring

Why is it when i do the following i get errors when relating to with wchar_t? namespace Foo { typedef std::wstring String; } Now i declare all my strings as Foo::String through out the program, ...

C# Marshal / Pinvoke CBitmap?

I cannot figure out how to marshal a C++ CBitmap to a C# Bitmap or Image class. My import looks like this: [DllImport(@"test.dll", CharSet = CharSet.Unicode)] public static extern IntPtr ...

Window iconification status via Xlib

Is it possible to check with the means of pure X11/Xlib only whether the given window is iconified/minimized, and, if it is, how?

热门标签