Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/148.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在无序_集合中插入新元素:提示是否应为end()?_C++_Stl_C++11 - Fatal编程技术网

C++ 在无序_集合中插入新元素:提示是否应为end()?

C++ 在无序_集合中插入新元素:提示是否应为end()?,c++,stl,c++11,C++,Stl,C++11,如果我确定某个值尚未进入无序集,并且我将插入该值,那么将该集end()迭代器作为提示传递是否正确 编辑: 代码: #包括 使用名称空间std; 无序集; int main(){ autoit=someset.find(0); if(it==someset.end())someset.insert(it,0);//正确吗?如果实际填充了该集,可能会提高性能吗? } 我假设您指的是迭代器插入(const\u iterator hint,value\u type&&val)是C++11的无序集的成员。

如果我确定某个值尚未进入
无序集
,并且我将插入该值,那么将该集
end()
迭代器作为提示传递是否正确

编辑:

代码:

#包括
使用名称空间std;
无序集;
int main(){
autoit=someset.find(0);
if(it==someset.end())someset.insert(it,0);//正确吗?如果实际填充了该集,可能会提高性能吗?
}

我假设您指的是
迭代器插入(const\u iterator hint,value\u type&&val)
是C++11的
无序集的成员
。如上所述,插入新元素时,
提示用于性能优化。新元素的插入/位置基于哈希。因此,如果您知道如何为您的
值\u类型生成哈希,您可以预生成它并向容器提供提示


但是,编译器可能会决定不使用它。因此,我的假设是:可以使用
end()
,但它可能没有任何效果。

我认为,您可以简单地调用
insert
函数,返回的值将告诉您值是插入的,还是已经存在于集合中

auto p = someset.insert(value);
if (!p.second) 
{
   std::cout << "value was already present in the set" << std::endl;
}
autop=someset.insert(值);
如果(!秒)
{

std::cout我相信提示对
无序集
是没有用的,就像
无序映射
是没有用的一样。这些方法的存在是为了保持这些容器的接口与它们的有序版本兼容(分别是
映射


阅读此处的更多内容:

显示一些代码示例以说明您的意思。
auto p = someset.insert(value);
if (!p.second) 
{
   std::cout << "value was already present in the set" << std::endl;
}