【发布时间】:2014-10-07 07:02:27
【问题描述】:
似乎不清楚我到底想要什么,所以我改写了这个问题
有些容器的每个元素都是唯一的(例如set、map),但是对于那些我无法通过索引访问元素(例如从容器中获取单个对象),如下所示:
std::set<Object> set {obj1, obj2};
Object o = set[0]; // does not work
因此,要拥有一个仅存储唯一元素的具有通过索引功能(例如vector)访问的容器,我必须手动确保容器中的所有元素都是唯一的,如下所示:
std::vector<Object> vec { ... }; // vector with some objects
// adding an object
if (std::count(vec.begin(), vec.end(), obj) == 0) {
vec.push_back(obj);
} else {
std::cout << "object already in container!\n";
}
每次添加对象时肯定遍历整个容器可能会很昂贵,所以我想知道是否有更好的解决方案。
【问题讨论】:
-
提取?你的意思是删除、阅读还是什么?
-
@Adrian May:我的意思是,获取一个对象并以其他方式使用它。
-
你也可以用套装做到这一点。
-
@Jagannath:但它没有 at() 函数或使用 [] 运算符?
-
我还是不明白你的意思。如果你用一个名为 Fantasy
的理想集合编写你的幻想代码,然后我们可能会知道你想要做什么
标签: c++ stl containers