问题标签 [stdcopy]

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.

0 投票
0 回答
53 浏览

c++ - C++ 使用多线程复制多个向量

我有一个包含向量的数组

我想使用多线程将所有向量中的所有值从数组 A 复制到另一个整数向量 B

为了在多线程中做到这一点,我有一个数组,其中包含数组 A 中的每个向量将在向量 B 中的位置。要复制,我使用的是 lambda 表达式:

现在这工作正常。它创建 10 个线程,每个线程将向量从数组 A 复制到 B 并定义位置。但问题是,它需要使用有限的线程复制所有值。例如 2。

然后,我需要为每个线程传递 5 个向量(当然位置数组将只有两个位置值),而不是在 lambda 函数中传递一个向量进行复制。

有什么办法可以修改 lambda 函数来做到这一点?或者任何其他可能的解决方案?

先感谢您 :)

0 投票
1 回答
131 浏览

c++ - 使用带有 LPTSTR 类型参数的 std::copy

我正在使用 Win32 API,我需要复制使用 捕获的参数argv,问题是,代码必须同时符合 ASCII 和 UNICODE,这是 Windows 中 C/C++ 的问题。

除此之外,如果可能,我必须使用 C++ 而不是 C,所以我std::copy用来复制类型LPTSTR(或TCHAR*)的参数,我可以使用_tcscpy_s,但正如我所说,它必须尽可能是 C++。

注意:我不能使用std::wstringorstd::string因为这些必须传递给CreateProcess()并且参数必须是类型TCHAR*,以便它可以将其转换为LPTSTRLPWSTR依赖于编码。

这是一个控制台可执行最小可重现示例:

我的问题是:

代码是否安全,和/或是否有更好的替代方案(最好使用 C++)?

(不仅是复制部分,而且是整个想法)

0 投票
1 回答
75 浏览

c++ - 是否有等同于 memmove 的标准库?

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

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

0 投票
0 回答
50 浏览

c++ - 将范围从容器复制到自身安全还是产生运行时错误?

为什么在 C++ 入门中说我们不能向容器插入由迭代器表示的范围到(容器本身的)相同范围?

输出:

  • 该程序似乎工作正常,但在 C++ 入门第 5 版中。据说这是一个“运行时错误:表示要复制的范围的迭代器。迭代器不能引用与我们正在更改的容器相同的容器”。

  • 是否说这是一个错误,因为insert函数会使迭代器无效?如果是这样,那么为什么我的程序似乎工作正常?