大家好我有一个列表迭代器类型,我想将其转换为UINT。
std::set<UINT> volSet;
UINT ssidBase = 1;
UINT ssidEnd = 2;
volSet.insert( ssidBase );
volSet.insert (ssidEnd);
UINT ssidStart = evf::volSet.begin();
我希望将volSet中的第一个值设置为ssidStart。我跑这个时出错了吗?
cannot convert 'std::_Tree<std::_Tset_traits<unsigned int, std::less< unsigned int>, std::allocator< unsigned int>, false> >::iterator' to 'UINT' in initialization
感谢任何帮助?
答案 0 :(得分:1)
答案 1 :(得分:1)
目前尚不清楚插入一个然后插入两个的目的是什么。当然,可以在以后插入更多的无符号值。但是,通过插入一个,唯一可能较低的其他可能值为零。 STL set,map,unordered_set和unordered_map容器(现在称为标准库)的insert方法返回一对。
插入方法参考链接:
设置
http://www.cplusplus.com/reference/set/set/insert/
地图
http://www.cplusplus.com/reference/map/map/insert/
unordered_set
http://www.cplusplus.com/reference/unordered_set/unordered_set/insert/
unordered_map
http://www.cplusplus.com/reference/unordered_map/unordered_map/insert/
如果元素已经存在于集合中,则第一对元素是指向现有元素的迭代器,第二个元素设置为false。如果成功插入(例如,键中的键尚未存在),则该对中的第一个元素指向已成功添加的元素,第二对元素设置为true。
使用set来保证第一个(最低)元素(例如,begin()方法将始终返回指向迭代器,除非set为空),确保始终在常量中找到集合中的最小值时间(例如O(1);一个人的大哦)。
C ++ 11中包含一些值的编码示例。
std::set<UINT> volSet;
pair <std::set<UINT>::itertor, bool> p;
//
// Using the same notation on unsigned int for consistency,
// insert 500 unsigned values into the volSet container.
//
for (UINT i = 500; i >= 0; i--)
{
p = volSet.insert(i);
if (p.second == false)
{
cerr << "volSet insertion warning!! The value for volSet already has: ";
cerr << i << endl;
}
}
//
// Do business logic, deletions/insertions from/to the volSet, and so on...
//
// Now obtain the lowest value inside the volSet and set it to a local variable.
// It is assumed that evf is a user defined namespace.
//
std::set<UINT>::iterator ii = evf::volSet.begin();
UINT ssidStart = *ii;
//
// Alternatively, implement without declaring a local iterator as Victor
// has shown above. Note that the parenthesis here are important. The call
// to begin() has to occur prior to the dereference operator call.
// Note that the sample above intentionally sets the ii iterator
// before dereferencing.
//
UNIT lowValue = *(evf::volSet.begin());
我希望这有助于理解迭代器和容器元素之间的区别。