标签: stdcopy

是否可以使用`std :: copy`将值从可变大小的数组复制到容器?

以下是一个MergeSort实现。我的问题是,编译器抱怨std::begin无法将其应用于可变大小的数组 temp以进一步使用std:copy

我正在使用C ++ 17和gcc 8.3

template<typename Container, typename Iterator>
void Search::MergeSort(Container &array, Iterator begin, Iterator end)
{
    auto const len = end - begin;
    if (len > 1)
    {
        auto mid = begin + len / 2;
        MergeSort(array, begin, mid); 
        MergeSort(array, mid, end); 

        typename Container::value_type temp[len];

        int p = 0;
        for (auto i = begin, j = mid; i < mid; ++i)
        {
            auto curr = *i; …
Run Code Online (Sandbox Code Playgroud)

c++ templates variable-length-array c++17 stdcopy

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

是否有与 memmove 等效的标准库?

标准库提供了std::copy,它可以被视为 C 的泛化/泛化memcpy()。它还保持 , 的要求memcpy(),使范围 [ first, ) 与范围 [ , )last不相交;否则我们会有未定义的行为。d_firstd_first + std::distance(first, last)

我的问题:是否有一个通用版本std::memmove(即不提出该要求并且通常使用临时缓冲区来实现)?如果不是,怎么会呢?

c++ idioms memcpy memmove stdcopy

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

std::copy 是否实现为使用多线程?

我想尽快将一个向量复制到另一个向量中。

一种方法是使用std::copy

std::copy(other_vector().begin(),other_vector().end(),this_vector.begin());
Run Code Online (Sandbox Code Playgroud)

但由于向量很长,我想知道该std::copy函数是否已实现,因此它会使用多个线程。

我可以提供一个自定义逻辑,用于将向量划分为相等的分离部分,以分别复制项目,但我不想再次重新发明轮子。

那么可以std::copy用于多线程吗?

c++ multithreading stdcopy

0
推荐指数
2
解决办法
1239
查看次数