for 循环内的迭代器初始化是否被认为是不好的风格,为什么?
通常,您会发现如下所示的 STL 代码: for (SomeClass::SomeContainer::iterator Iter = m_SomeMemberContainerVar.begin() Iter != m_SomeMemberCont…
非 void STL 擦除的安全等效项是什么?
假设我有一个 hash_map 和类似的代码, // i is an iterator i = hash_map.erase(i) 但是 GCC 的 STL 在擦除时不会返回迭代器,而是返回一个 void。 …
将 auto_ptr 与 new char[n] 一起使用是否错误
如果我使用声明一个临时自动删除字符缓冲区, std::auto_ptr<char> buffer(new char[n]) 那么当缓冲区超出范围时,该缓冲区将自动删除。 我假设使…
将自定义函子与 std::generate_n() 算法一起使用的正确方法?
以下代码在 XPSP3 上的 VC++ 8 下可以正确编译,但运行它会导致运行时错误。 我的标头看起来像: #include <stdexcept> #include <iterator> …
如何检测 std::map 循环中的最后一次迭代?
我试图找出最好的方法来确定我是否处于地图上循环的最后一次迭代中,以便执行如下操作: for (iter = someMap.begin() iter != someMap.end() ++iter)…
使用STL查找向量中的所有元素
我有一个需要操作的元素集合,调用集合上的成员函数: std::vector<MyType> v ... // vector is populated 对于调用不带参数的函数,这非常简单:…
有没有一种方便的方法将 std::pair 包装为新类型?
我经常发现自己使用 std::pair 将两个相关量的逻辑分组定义为函数参数/返回值。 一些例子:行/列、标签/值等。 很多时候我真的应该滚动我自己的类,而…
如何初始化 'const std::vector' 像交流阵列
是否有一种优雅的方法来创建和初始化一个 const std::vector ,例如 const T a[] = { ... } 为固定值(并且小)值的数量? 我需要经常调用一个需要 ve…
std::for_each 中的多态函子
我正在尝试使用 stl 算法 for_each ,而不在整个代码中增加模板。 std::for_each 想要按值实例化 MyFunctor 类,但由于它是抽象的所以不能。 我创建了…
视觉c++ “对于每个” 可移植性
我最近才发现 Visual C++ 2008(也许还有早期版本?)支持 stl 列表等上的 foreach 语法以方便迭代。 例如: list<Object> myList for each (Obje…