我应该在 C++ 中公开迭代器和适配器方法还是整个容器?
考虑这段代码: class Foo { // ... std::vector<Bar> bars } 我应该公开整个容器,还是应该公开 typedef 的迭代器类并编写适配器方法 (begin(), …
成员变量和STL算法
#include <vector> #include <functional> #include <algorithm> using namespace std struct Foo { int i double d Foo(int i, double d…
为什么没有 std::copy_if 算法?
C++ 中没有 std::copy_if 算法有什么具体原因吗?我知道我可以使用 std::remove_copy_if 来实现所需的行为。我认为它会出现在 C++0x 中,但是一个带有…
如何使用bind1st和bind2nd?
我想学习如何使用绑定函数。 这个想法是这样的: 我有这个接受参数的函数: void print_i(int t, std::string separator) { std::cout << t <&l…
end() 在 STL 映射/集中是否需要保持不变?
标准中的第 §23.1.2.8 规定,集合/映射上的插入/删除操作不会使这些对象的任何迭代器无效(指向已删除元素的迭代器除外)。 现在,考虑以下情况:您想…
为什么STL的实现如此难以理解? C++ 如何这里可以改进吗?
例如,为什么STL实现中的大多数成员都有_M_或_或__前缀? 为什么有这么多样板代码? C++ 缺少哪些功能可以使向量(例如)实现清晰且更简洁?…
此 C++ 出现分段错误的原因是什么?使用列表的代码?
我有一些复杂的 C++ 代码,但问题缩小到对结构列表执行 push_back : list<cache_page> cachedPages void f() { cache_page cpage(a,b) cachedPag…
如何使向量的元素唯一? (删除不相邻的重复项)
我有一个包含一些不相邻重复项的向量。 作为一个简单的示例,请考虑: 2 1 6 1 4 6 2 1 1 我试图通过删除不相邻的重复项并保持元素的顺序来使此向量唯…
关于 C++ 中的 parallel_accumulate 的混淆;并发实践
在下面的示例(第 2 章)中,Anthony Williams 尝试并行化标准累加函数。我的问题是他为什么这样做: unsigned long const max_threads=(length+min_p…
从 std::cin 读取密码
我需要从标准输入读取密码,并且希望 std::cin 不回显用户键入的字符... 如何禁用 std::cin 的回显? 这是我当前正在使用的代码: string passwd cout…
获取内部 STL 容器的迭代器?
我在尝试获取内部子容器的迭代器时遇到问题。 基本上想象一下这个简化的代码: typedef map<string, map<string, map> > double_map double_m…
我无法理解这一行 - 取消引用私有成员变量的地址还是什么?
我不久前问了一个问题 关于访问STL适配器的底层容器。我得到了一个非常有用的答案: template <class T, class S, class C> S& Container(prio…
如果我打算使用任意类对象作为键,我可以使用 stl 映射吗?
我是STL新手。使用地图来存储任意对象让我感到困惑的是: std::map<MyClassObj, MyDataObject> MyMap 我如何找到对象。例如,MyMap.find (MyClass…