根据en.cppreference.com和VC++ 14.0,迭代器需要具有复制构造函数和复制赋值运算符.
我的迭代器类(它通过Windows进程迭代)不能是可复制构造或可复制 - 它拥有一个HANDLE快照并管理释放它所以不可能复制那些 - 移动它们是可能的,我提供了一个移动构造函数和移动赋值运算符.但是,算法会std::find_if复制它们(在VC++ 14.0中是一些std::_Find_if需要复制迭代器的调用)并且不想工作.
为什么你的迭代器会占用资源?迭代器应该像指针指向某个东西.
因为为了遍历Windows进程,您需要创建一个快照,然后使用它来执行此操作 - 问题是,一个快照,一个迭代.快照也不可复制.
为什么他们不能MoveConstructible和MoveAssignable?哪些算法(如果有的话)真的需要复制迭代器才能工作?
我正在用C++编写一个玩具桌面应用程序.它需要在YouTube上搜索一首歌.目前,该应用通过参数调用googleapis.com/youtube/v3/searchkey.这很好,易于编写,但会导致身份验证问题.
我无法将密钥与应用程序一起分发,因为它很容易受到配额失窃和其他因素的影响(作为一种解决方法,我目前需要生成您自己的API密钥并将它们放入您的配置中 - 它不方便,闻起来像一个肮脏的黑客).Google允许限制密钥,但仅限于:IP,HTTP引荐,特定的Android应用,特定的iOS应用.这些都不适用.因此,我必须将该数据存储在其他地方或使用其他一些auth方法.第一种需要某种服务器,它在某个地方全天候运行,并且有自己的配额限制,这有更多的问题而且很荒谬 - 必须有一个正确的方法.当我尝试使用Google Developer Console的凭据向导时,在询问了有关我的应用的一些事情后,它只告诉我应该使用API密钥.
我想要的是什么:
我觉得我对这些东西并不熟悉,而且某处有明显的解决方案; 毕竟,您可以随时随地通过浏览器进行YouTube搜索.如何从桌面应用程序执行此操作?
为什么构造/析构函数不是在使用所谓的malloc和free在C++中,而不是当我们使用new和delete,构造函数/析构函数被调用?为什么会这样?