例如,
unordered_set<int> s ;
s.insert(100);
如何从s获得值100?
从http://www.cplusplus.com/reference/unordered_set/unordered_set/begin/,
请注意,
unordered_set
对象不能保证将哪个特定元素视为其第一个元素。但是,无论如何,从开始到结束的范围将覆盖容器(或存储桶)中的所有元素,直到无效为止。
所以s.begin()
不会总是给我值100吗?
请澄清。
答案 0 :(得分:7)
当只有一个元素(100)时,就没有定单问题,因此*begin(s)
是100
。
但是,一旦unordered_set
中有2个或更多元素,您就不知道哪个值是第一个(*begin(s)
)。
答案 1 :(得分:0)
从您提供的链接中,您将看到begin()将为您提供一个元素。
std::cout << "myset contains:";
for ( auto it = myset.begin(); it != myset.end(); ++it )
std::cout << " " << *it;
std::cout << std::endl;
output: myset contains: Venus Jupiter Neptune Mercury Earth Uranus Saturn Mars
如您所见,使用begin()将为您提供对集合的第一个元素的迭代器,并且您可以遍历所有元素。
但是,在同一示例中begin(i)将为您提供存储桶,有些存储桶可以为空,有些存储桶可以包含多个元素。