std ::旋转参数不正确
std::rotate arguments not correct?
我有一个 unordered_map
的迭代器,我想在迭代器上使用 std::rotate
,但是我必须缺少任何东西。
当我这样做喜欢
时,代码可以工作std::vector<std::unordered_map<int, int>::iterator> _lruList;
void used(std::unordered_map<int, int>::iterator& it, int type) {
if (type == 0) {
auto item = _lruList.begin();
while (item != _lruList.end()){
if (*item == it){
std::rotate(item, item + 1, _lruList.end());
return;
}
item++;
}
}
}
,但我希望代码像这样起作用,因为此功能被称为很多,其中额外的循环添加了额外的未记录时间复杂性
std::vector<std::unordered_map<int, int>::iterator> _lruList;
void used(std::unordered_map<int, int>::iterator& it, int type) {
if (type == 0) {
std::rotate(it, it + 1, _lruList.end()); //error on it
return;
}
}
编辑:更多代码,我看到它的类型和_lrulist.end()冲突。无论如何,我是否可以解决这个问题,仍然可以完成我想做的事情,而无需通过向量迭代?
在进行进一步调试后,it + 1
似乎根据VS2015给我"error type"
。
std::unordered_map<int, int>::iterator found = _cache.find(key);
// if key doesn't exist, return -1
if (found == _cache.end()) {
return -1;
}
// if key exists, return value and update lru
used(found, 0);
return found->second;
如果这有助于回答我的问题,我可以提供更多代码段。
任何帮助将不胜感激!
void used(std::unordered_map<int, int>::iterator& it, int type) {
if (type == 0) {
std::rotate(it, it + 1, _lruList.end()); //error on it
return;
}
}
在此功能中,it
(和it + 1
)是类型
std::unordered_map<int, int>::iterator
,但_lruList.end()
的类型是完全不同的
std::vector<std::unordered_map<int, int>::iterator>::iterator
std::rotate
的所有三个参数都需要相同的类型(以及从同一容器中)。所以我不知道您要做什么,但是这个调用显然无法正常工作:
std::rotate(it, it + 1, _lruList.end());
相关文章:
- atoi() 在应用于大型命令行参数时会产生不正确的值
- 将参数传递给泛型 lambda 时复制构造函数不正确
- 失败,出现错误 87:参数不正确.如何判断哪个参数不正确?
- CMake 设置使用不正确的参数数调用的目标属性
- CreateThread的参数不正确
- Boost::Asio串行读/写打开:参数不正确
- 模板对象管理器,参数不正确
- Cmake add_executable使用不正确的参数数量调用
- 为什么构造函数C++接受不正确的类型作为参数?
- 收到错误 87,安装程序的参数不正确DiGetDeviceInterfaceDetail
- 带有 decltype 的模板参数数量不正确
- 我将类型库(.tlb)导入到Delphi中,但函数参数似乎不正确.我应该如何解决它
- 值传递的参数在 Visual Studio 2015 x64 调试器中显示不正确
- std ::旋转参数不正确
- 重载解析不正确,const 参数的值为 0
- 'decltype'参数不正确
- 在visual c++中从无序映射继承时,模板参数的sizeof()不正确
- LoadLibraryEx错误87(参数不正确)
- Win32 窗口包装器出错(参数不正确)
- IDirectSound8 setCooperativeLevel 返回不正确的参数