问题标签 [inserter]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 使向后插入器回退到任何插入器的惯用方法是什么?
我想将元素插入 STL 容器(其类型是模板参数)。如果容器允许 back_insertion,我想使用它,否则只是任何插入器。
我想避免为此实现我自己的特征,我很确定一定有某种方式我可以说“如果可能,实例化一个 back_inserter,否则实例化一个插入器”。
我怎么做?
c++ - C++11,常量数据成员,std::inserter,复制
有一个类Test的简单例子
与常量数据成员。代替构造函数,数据不会改变。我想使用 std::inserter 将测试对象的向量复制到另一个向量。我很惊讶复制构造函数是不够的
并出现以下编译器错误(VS2015):
是否可以让数据成员 const 并以不同的方式执行副本(一些 hack :-))?或者必须定义运算符 =,因此数据成员不能是 const (不可能分配给具有 const 数据成员的对象)?
谢谢你的帮助。
c++ - C++17 的 std::inserter 替换
在这篇文章中:
set_intersection
使用std::inserter
如下:
但是,std::inserter
不再可用,C++17
那么应该如何重写此代码?
编辑:正如许多人所指出的,std::inserter 在 C++17 中仍然可用。不知何故,我最终阅读了 std::iterator 是如何被弃用的,却没有意识到它不是指 std::inserter。我的问题是通过<iterator>
在我的代码中特别包含标题来解决的。
c++ - C++ 混乱中的插入器
所以我不明白在这种情况下如何使用插入器。我知道什么是插入器,我知道 std::front_inserter 和 std::back_inserter 和 std::inserter 但我对现在将要介绍的这个问题感到困惑。我需要制作函数,它将转换向量的元素并将它们放入双端队列(或向量没关系,无论如何它的“通用”函数)。该函数有5个参数,其中一个是另一个函数(它只能有一个参数,没有指定什么类型(我的意思是它可以是引用,迭代器,指针......无论如何))。
如果我的向量是:
我需要使用 lambda 函数进行一些修改,这将使我的双端队列具有如下元素:
所以你看到 deque 的第一个元素是向量 ^2 的最后一个元素(你可以看到我想要做什么)。所以我的问题是:如何使用插入器来解决问题?我的意思是我应该以某种方式将插入器放入 lambda 函数中吗?也许 lambda 应该是这样的:
我正在考虑这个问题,但是当我将它作为这个“大”函数的参数发送时,我不明白这个 lambda 将如何工作?它如何知道大函数中的 q 是什么?
我希望你明白我想做什么。
这是示例。所以我必须做一些功能,这是原型(可以说它是无效的):
假设我在 main 中有以下代码:
c++ - C++ STL-插入器
我是 C++ STL 的新手。我在下面的代码中有一些关于输出的问题。为什么这没有提供预期的输出?
预期输出:1 2 3 1 2 3 4 5 4 5
实际输出:1 2 3 1 0 3 4 5 4 5
谁能帮我找出哪里出了问题?
c++ - 如果双端队列不够大,为什么通过 std::copy 成功将 std::deque 对象附加到自身?
这本书是对的,我只是看错了一句话。
正如@uneven_mark 的回答清楚地指出的那样,以下问题取决于我的误读。
在阅读Josuttis的 C++ 标准库(第 2 版)时,我以某种方式确信coll
在第 457 页被声明为 a std::deque
(相反,它被声明为std::list
!),因此我问了这个问题。
希望可以作为读者的深思。
原始问题:
在“C++ 标准库(第 2 版)”的第 456 页,Josuttis 指出,在您调用之前
在 a coll
of class上std::vector
,您必须确保它coll
有足够的空间(在这种情况下,它有capacity
至少两倍的size
),否则
该算法在运行时使传递的源迭代器无效。
相反,在第 458 页,他没有对
应用于 a coll
of class std::deque
,即使在第 286 页,针对std::deque
容器指定了以下内容:
[...] 当元素插入到前面或后面时。在这种情况下,对元素的引用和指针保持有效,但迭代器则不然。
因此我怀疑。(是的,我知道std::deque
甚至不提供类似reserve
的成员函数。)
只要我理解了这个答案,我的理解是front_inserter(coll)
迭代器可以导致指针数组的重新分配(这是一种合法的实现方式std::deque
),并且不能导致coll
存储实际元素的数组的重新分配,因此使指向元素的引用/指针有效,同时使iterator
s 无效,其正确行为(我正在考虑如何operator++
实现)依赖于指针数组和指向数组。
copy
如果这是真的,那么我猜想与's参数对应的参数coll.begin()
在分配给它的那一刻会失效,导致指针数组的重新分配。
c++ - 如何 cin 到 back_inserter 或 c++ 中的任何插入器?
所以我想简化这个片段
而且因为我最近阅读了有关 inserters 和 back_inserters 的内容,所以我想立即使用它们,这就是我想出的
但是由于某种原因,编译器会吐出一条巨大的错误消息,我不能在这里放,所以这里只是第一句话,因为我认为它是最相关的。
谢谢你的帮助!
注意:在任何人评论全局变量的使用和 using 命名空间行之前,此代码仅用于竞争性编程。
c++ - Copying string into set in lowercase?
I have the following small and easy code:
I'd like to copy all items of in
into out
.
However, with an in-place lowercase conversion, preferrably without an extra temporary variable.
So this is the required content of out
at the end:
Please note, const auto& item
is fixed, meaning I can't remove the const
requirement (this is part of a bigger library, here is over-simplified for demo).
How should I do this? (If I remove the "const" modifier, it works, but if modifications are not allowed on item
, how can I still insert the item into the set, while also transforming it to lowercase?)