小编Ada*_*dam的帖子

std::unordered_set 中的 std::string_view 和 std::string

假设您有一个std::unordered_set<std::string>.

您有一个std::string_view要在容器中搜索的对象。问题是,您不想std::string从您的 中创建 a std::string_view,因为这种首先违背了使用的目的std::string_view

不过,好像std::string_view应该可以作为key使用;应该有某种方式来比较std::string_viewand std::string,因为它们基本上代表同一件事。但是没有,无论如何都没有在 STL 中。

这是一个僵局,我是否被迫编写自己的比较对象std::string_viewstd::string与我的对象一起使用std::unordered_set

编辑:这个问题特定于 string_view 对象。“重复”问题不相关。正如预期的那样,我收到了一个独特问题的独特答案。

c++ stl unordered-set string-view c++17

10
推荐指数
1
解决办法
3516
查看次数

'仅将成员函数添加到类的专用模板中

我有一个模板类,我想向模板的特定专业化添加特殊函数。此函数仅对 std::string 模板有意义。

我展示了我目前如何处理这个问题...问题是删除的函数仍然对所有模板类型可见,而不仅仅是我想要使用它的 Match 模板。

有没有更优雅的方法来处理这个困境?

 template<typename T> 
 class Match {

  /*
   *Class Definition
   * 
   */

   void string_function() = delete;
 };

template<>
void Match<Std::string>::string_function(){

    //do something that only makes sense with strings
}
Run Code Online (Sandbox Code Playgroud)

c++ templates template-specialization c++17

6
推荐指数
1
解决办法
1438
查看次数

STL容器的std :: string_view

这是对string_view对象的一个很好的解释.

除了std :: string之外,是否有任何STL容器的'_view'对象?

在我看来,这是一个非常有用的东西.想象一个std::vector_view只存储start迭代器和length字段的类.实际上并不拥有底层数据可以提高效率.

c++ stl

5
推荐指数
1
解决办法
197
查看次数

如何使用协程延迟迭代大型(大于内存)Kotlin 序列

我有一个延迟生成的大序列,并且太大而无法放入内存中。

我想使用协程来处理这个序列以提高性能,在本例中我使用 10 个并行线程进行处理。

            runBlocking(Dispatchers.IO.limitedParallelism(10)) {
                massiveLazySequenceOfThings.forEach { myThingToProcess ->
                    print("I am processing $myThingToProcess")
                    launch() {
                        process(myThingToProcess)
                    }
                }
            }
Run Code Online (Sandbox Code Playgroud)

这里的问题是,第一个打印语句将对序列中的每个项目执行,因此对于像我这样的非常大的序列,这将导致 OOM。

在这个例子中,有没有办法让我的序列的迭代变得“惰性”,以便在任何时候只处理固定的数字?

我是否被迫在此处使用通道(可能使用缓冲通道?)在序列迭代期间强制执行阻塞调用,直到处理某些项目?或者我还缺少其他一些更清洁的解决方案吗?

在我的实际示例中,我还使用supervisorScope来监视每个处理作业,因此如果可能的话我也想保留它。

multithreading asynchronous sequence kotlin kotlin-coroutines

3
推荐指数
1
解决办法
525
查看次数