将一个元素与矢量中的所有其他元素交换
Swap one element with all other in vector
我有这样的向量 v = {1, 0, 1} 我想将每个元素与其他元素交换,并在每次锯两个元素时返回一个向量。对于此示例,解决方案应为:v1 = {0, 1, 1}, v2 = {1, 0, 1}, v3 = {1, 0, 1}。我确实喜欢他的,但我得到相同的结果:
for (size_t i = 0; i < tempSol.size() - 1; ++i) {
for (size_t j = i + 1; j < solution.size(); ++j) {
swap(tempSol[i], tempSol[j]);
listSolution.push_back(tempSol);
}
}
结果是:v1 = {0, 1, 1} , v2 = {1, 1, 0}, v3= {1, 0, 1} 向量 v2 的差值。感谢您的帮助
你的问题源于你正在改变你的原始向量,所以稍后你交换已经交换的值。
您需要:
- 在每次迭代时复制矢量。
- 在该副本上进行交换。
- 将(或者更好的是,移动)突变的副本添加到您的列表中。
看起来你的代码是正确的,但你的逻辑是错误的。 在您想要的结果中,您执行第一次交换两次,在代码的结果中,它只执行第一次交换一次,我认为这是真正的意图。 如果矢量是带有键的地图,则更容易概念化。 例如:v = {一: 1, 二: 0, 三: 1} v1 = {二: 0, 一: 1, 三: 1} v2 = {三: 1, 一: 1, 二: 0}.或者,也许您认为我将是指向向量中第一件事的指针,并且它会随着交换而移动。 这在实现时不起作用,它将继续访问第一个元素,该元素在第一次交换后将变为 0。
相关文章:
- 通过交换元素使数组相同
- 转置矩阵:交换元素不会更改值
- 交换函数不是在 C++ 中交换 2D 数组的元素
- 如何交换数组中的元素?
- c++:交换向量中所有元组的第一个和第二个元素
- 为什么只有当我的容器有超过 32 个元素时才由 std::sort 调用交换?
- 使用 STL 交换堆栈 C++ 中的第一个和最后一个元素
- 使用指针 c++ 交换结构数组中的元素
- C++数组交换并查找最小元素
- 是否可以交换在 c++ 中作为函数 func(say) 中的参数传递的 const 向量的两个元素,例如:vector<int>func (const vector<int>&
- 如何将元素的索引从2D数组存储到1D数组中,然后交换这些值
- 用于快速排序的最大元素交换次数
- 为什么 size() 在与其他堆栈交换元素后提供错误的堆栈大小?
- 链接列表中元素的成对交换(通过更改指针)
- 使用交换函数交换元素是可以的吗?
- 交换链接列表元素
- 如何在 2D 数组 c++ 中交换元素
- C++最令人烦恼的矢量元素交换
- C++中两个向量之间的元素交换
- 将一个元素与矢量中的所有其他元素交换