- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想从 foo 转换为 bar。
struct A
{
explicit A(int d): m_d(d) {};
private:
int m_d;
};
A some_function (int i) { return A(2*i); }
std::vector<int> foo;
std::vector<A> bar; // This is part of a Library not under my control
接口(interface)只提供pbar
std::vector<A>* pbar =&bar; // This is the interface to the part of a Library not under my control
取消引用 pbar 并将其用作 back_inserter 的参数是否合法?为什么?
std::transform (foo.begin(), foo.end(), std::back_inserter(*pbar), some_function);
这里有一个完整的例子:http://coliru.stacked-crooked.com/a/2aec8d000cabf78b
最佳答案
是的,这样做完全没有问题。我不太确定你困惑的根源是什么,所以我不确定如何回答“为什么”。如果你有一个指向对象的非 const
指针,你可以取消引用它并将它传递给需要非 const
引用的函数(如 std::back_inserter
).
关于c++ - 如何使用 std::back_inserter 插入容器(只有一个指向容器的指针),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28764874/
如果可能提高效率,如何使用 std::back_inserter() 创建一个将一个集合的内容添加到另一个集合的函数?我没有看到 push_back() 的明显特征,而且我不是 std::enable
#include #include #include using namespace std; vector square_vec(const vector& v) { vector r
我正在尝试了解 back_inserter 的工作原理,这是我从 SGI-STL 获得的实现: template class back_insert_iterator { protected:
在下面的代码中,对象“队列”是不可复制的,但由于 std::mutex 是可移动的。 std::generate_n(std::back_inserter(thread_pool),
我想从 uint 类型的 vector v1 复制到 uint 类型的 v2。 V1 有大约 750,000 个元素。 选项 1: std::copy(v1.begin(), v1.end(), st
我不明白为什么这段代码是准确的 vector coll; coll.reserve(2*coll.size()); copy ( coll.begin(), coll.end(), // z
我想用以下代码中的算法替换循环 int numbers[] = { ... }; vector output; for( int* it = numbers+from; it != numbers+t
只是一个简单的问题 - 将字符串添加到 vector 的末尾哪个更好? , back_inserter或 push_back ?主要是,哪个工作得更快(我正在处理大量数据,所以边际差异实际上很重要),
我的以下代码可以编译,但我不知道如何在不使用 decltype 的情况下编写它。我在使用 decltype 的行下方的注释行中写下了失败的尝试。 #include #include #includ
我很困惑是否应该在设置 OutputIterator 时递增它。请参阅以下我试图拆分字符串的代码。我的问题是 while 循环的第三行,无论我有 *oit = ... 还是 *oit++ = ...,
我正在通过以下链接阅读 STL 教程 http://cs.brown.edu/people/jak/proglang/cpp/stltut/tut.html 如何修复编译错误? 这里提到了下面的代码
使用 back:inserter 时是否需要预留内存? d.reserve(s.size()) std::copy (s.begin(),s.end(),back_inserter(d)); 最佳答案
如何包装一个 OutputIterator,例如 back_inserter_iterator与转型?考虑 std::vector xx; std::vector yy; std::vector di
大家好,我将展示三个代码 1 和 2 可以正常工作,但第三个不起作用。我想了解为什么不起作用或为什么其他两个起作用? (strrand 函数产生随机字符串) 1. int main(){ ve
伙计们!我试图了解迭代器的工作,所以在下面的代码中,是否可以在不更改基础数据(结构)的情况下将 back_inserter 更改为 front_inserter。请你解释一下为什么。如果改变是可能的,
vector v = {"AAAAidad", "bbbb", "ADWHIBQSDS", "Hi", "fes", "dafegrg", "QQEEQEQEQEQ E", "\"", "a"
在通用代码中,我试图告诉输出迭代器(实际上是 std::back_inserter_iterator move 一系列元素。令我惊讶的是,它看起来好像元素是在 move-to-back_inserte
我想从 foo 转换为 bar。 struct A { explicit A(int d): m_d(d) {}; private: int m_d; }; A some_functi
我为 std::transform 创建了一个包装器,以便每次都不会同时传递开始和结束。 template void transform(const C& c1, C2& result, const
我需要从文件中读取 float 并将它们插入我的 vector 中。我可以通过使用临时 float 让他工作,但我现在正在尝试不使用临时 float 。 出于某种原因,以下内容不起作用。 std::i
我是一名优秀的程序员,十分优秀!