10得票1回答
C++ - 错误:'list'不是一种类型(类中作为成员变量的list对象)

我经常遇到“'xxx'不是类型”的错误,以前的大多数帖子都提到这种错误会发生在某些依赖关系问题上。但是,我似乎找不到我的问题所在。以下是我的情况: GameLib.h #ifndef GAMELIB_H_ #define GAMELIB_H_ //Structures struct pl...

9得票5回答
将对象添加到std::list时调用析构函数

我有一个Foo对象和一个持有它实例的std::list。我的问题是,当我向列表中添加一个新实例时,它首先调用构造函数,然后也调用析构函数。然后根据this指针在另一个实例上调用析构函数。 虽然只添加了一个实例到列表中,但由于它的析构函数(以及其父类的析构函数)被调用,因此无法像预期那样使用该...

9得票3回答
list::empty()在多线程情况下的行为是怎样的?

我有一个列表,我希望不同的线程从中获取元素。为了避免在列表为空时锁定互斥量,我在锁定之前检查empty()。 如果list::empty()的调用不是100%正确的,也是可以的。我只想避免崩溃或影响并发的list::push()和list::pop()调用。 我是否可以安全地假设VC++和...

8得票1回答
自定义池分配器 std::list

我正在编写一个自定义分配器,用于与std::list一起使用。该列表的大小始终会受到限制,并且列表元素将在约束树搜索算法中非常频繁地进行分配和释放,因此我认为一个自定义池分配器(从堆栈中分配元素)应该能够提高性能。 我的问题是:std::list如何分配用于存储链接/节点的数据结构。它将使用...

8得票1回答
替换std :: list对象,给定一个迭代器

给定一个指向std::list的迭代器,如何替换迭代器引用的位置上的对象?目前我能想到的方法是使用新对象和迭代器调用insert(将新对象插入到迭代器引用的元素之前),然后调用erase删除要替换的对象。是否有更直接的方式来完成替换?

8得票5回答
将std::list作为只读方式公开

我有一个类,其中包含一个std::list。我想公开此列表,但仅以只读的方式公开其结构和数据,但仍可使用迭代器。 目前我让它“工作”的方式是返回列表的副本。这样可以保证我的类是“安全”的,但当然无法阻止调用者修改他们的列表副本并且未获取正确的数据。 有更好的方法吗?

7得票4回答
保持 std::list 迭代器在插入元素后仍然有效

注意: 这不是关于“使用列表还是双端队列”的问题。这是一个关于在使用insert()时迭代器的有效性的问题。 这可能是一个简单的问题,只是我太蠢了,看不到正确的做法。我正在实现(好或坏)一个网络流量缓冲区作为 std::list<char> buf,并将当前读取位置作为一个迭...

7得票5回答
C++,std::list,赋值,继承

class A, B; class A { public: A& operator= ( const A &rhs ) { return *this; } }; class B: public A { public: B&...

7得票1回答
std::list和std::for_each:我的结尾在哪里?

考虑以下最简示例: #include <functional> #include <algorithm> #include <list> int main() { std::list<std::function<void()>&...

7得票3回答
如何将已排序的std::list<std::pair>转换为std::map

我有一个 `std::list>`,我知道它是按照 `std::string` 元素排序的。 由于我想基于 `std::string` 元素做很多 `std::find_if`,因此我认为使用带有 `lower_bound` 和 `upper_bound` 的 `std::map` 更加适合...