我有2个整数向量。偶尔,我想换掉两个(详情请见下面)。我正在考虑的两个选项是使用交换函数或交换指针。我看到交换在不变的时间运行,看起来更干净。
有关交换的更多细节:我有多个线程访问第一个向量。偶尔我想对矢量进行一些长时间运行的计算。我仍然想从其他线程收集数据,所以我将交换另一个线程,以便其他线程可以在此期间继续运行
答案 0 :(得分:1)
你应该在算法库中使用std :: swap巫婆。
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
int main()
{
vector<int> a;
a.push_back(10);
vector<int> b;
b.push_back(9);
std::swap(a,b);
std::cout<< a[0];
return 0;
}
所以你看到它交换a和b
答案 1 :(得分:0)
“我有两个整数向量。”
为什么呢?看起来你想要的是一个单个向量,多个线程可以访问(通过适当的同步)。
任何“长时间运行的功能”都应该在第一个矢量的副本上运行。
制作副本的代码(仅vec2 = vec1;
)也应该同步。
swap
可能不是你想要的,因为在交换之后,访问向量的线程会发现向量中的旧值消失了,他们看到的只是“第二个”向量中的值。除非第二个向量与第一个向量相同,否则这些不一样,这意味着它只是一个副本,这意味着你只是将一个向量与自身交换...