我有以下结构列表
switch(view.getId()) {
case R.id.accept_textview:
// do what you want when click accept textview
break;
}
我想知道有多少独特的群体
例如
struct Element
{
int id;
int groupID;
};
此处有4个元素,但只有3个唯一的组ID 0,1,2
我试图寻找一种有效的方法来做到这一点因为我的名单增长了。
我试过这个
list<Element> myElements;
Element e;
e.id = 0;
e.groupID = 2;
myElements.push_back(e);
e.id = 1;
e.groupID = 0;
myElements.push_back(e);
e.id = 2;
e.groupID = 2;
myElements.push_back(e);
e.id = 3;
e.groupID = 1;
myElements.push_back(e);
但这会让我回到2个不重复的ID 0,1
答案 0 :(得分:2)
使用集合来存储项目(暂时)。集合将仅存储唯一项目。集合的大小是唯一项目的数量。
为对象添加相等比较器:
struct Element {
bool operator==(Element const& rhs) const {
return id == rhs.id && groupId == rhs.groupId;
}
};
使用set
。
std::set<Element> elementSet{elementList.begin(), elementList.end()};
size_t const numUniqueElements = elementSet.size();
请注意,构建set
会产生一些成本(时间和空间复杂性)。如果您想将重复用于其他目的,则可以继续使用list
,否则可以从list
和set
进行切换,以便始终拥有唯一的可用数据(通过.size()
)