- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
请考虑以下代码:
int main()
{
typedef boost::ptr_vector<int> ptr_vector;
ptr_vector vec0;
vec0.push_back(new int(1));
vec0.push_back(new int(2));
vec0.push_back(new int(3));
vec0.push_back(new int(4));
vec0.push_back(new int(5));
ptr_vector::iterator last = boost::prior(vec0.end()),
first = boost::prior(last, 3);
ptr_vector vec1(first, last); // this will copy '2, 3, 4' to vec1
struct print
{
void operator()(int const& i) {
std::cout << i.m_i << std::endl;
}
};
std::for_each(vec0.begin(), vec0.end(), print()); // 1, 2, 3, 4, 5
std::for_each(vec1.begin(), vec1.end(), print()); // 2, 3, 4
return 0;
}
我不想copy
元素进入vec1
, 但以 shared_ptr<>
的方式分享提供。我的要求基本上是:
shared_ptr::unique()
)两个容器都属于同一个类。因此,它们具有相同的作用域,并且会同时被销毁。这些类的构造函数构造两个容器。 build 后不会对这些容器进行任何修改。
我需要使用 std::vector<>
吗?的 shared_ptr<>
或者还有其他解决方案吗?
最佳答案
是的,你应该使用 vector<shared_ptr<int>>
.
由于您只使用范围,您可以组合一个自定义解决方案来跟踪范围及其交集(用于实现 unique
。)然后,您可以将所有内容存储在 vector 中并将范围索引到那。这可能会更快(只是因为避免了缓存未命中),但实现起来会更费力。
关于C++ 在 boost::ptr_container 中共享元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6390123/
如何自定义 ptr_container 中元素的比较?使用 ptr_set,我想定义一个检查元素是否相等的函数。然而,定义 bool operator==(const Foo& other) (or
对于我当前的项目,我使用 boost::ptr_vector 以多态方式保存 Objects,并且一切正常,直到我的一个构建 VS2010 抛出它可以不克隆 object 所以我去了,查找克隆,并按照
请考虑以下代码: int main() { typedef boost::ptr_vector ptr_vector; ptr_vector vec0; vec0.push_b
我正在测试 boost ptr_containers 并编写了一个小程序如下: class Test { public: ~Test() { cout
我已经将 boost 库从以前的 1.54(svn 源)更新到 1.57(git 源)。尽管我使用了相同的 ./b2 参数,但目标目录不包含 ptr_container 库。 具有克隆存储库的目录在此
我想将某个元素从 a 移动到 b: boost::ptr_vector a, b; // ... b.push_back(a.release(a.begin() + i))); 上面的代码没有编译,因
我假设从 ptr_set 释放的对象如果没有手动删除就会泄露。然而,下面的测试程序只显示了 valgrind 中的 2 个泄漏(从第 9/13 行开始),第 12 行没有泄漏。我误解了 release
看完timdays answer至 this question我很好奇 boost::ptr_container 之间的区别和一个 std::vector .我的印象是 a boost::ptr_co
有了 c++11,我问自己是否可以替换 c++11 中的 boost::ptr_containers。我知道我可以使用例如一个 std::vector > ,但我不确定这是否是一个完整的替代品。处理这
我是一名优秀的程序员,十分优秀!