c++ - 使用通用交换函数来缩短代码
问题描述
我有以下循环(其中:)Array<T> elements;
:
while (lengths[tempElement] == START) {
T next = elements[tempElement];
elements[tempElement] = elementToFind;
tempElement = next;
}
我想使用以下swap
功能:
void swap(T& firstElement, T& secondElement) {
T temp = firstElement;
firstElement = secondElement;
secondElement = temp;
}
为了缩短代码。所以我用:
swap(elements[tempElement],elementToFind);
但我认为它没有达到我的预期。如何使用该交换功能?
解决方案
您想要的代码使用T &operator=(T const&)
while std::swap
uses T &operator=(T&&)
。
如果您希望它切换为使用复制构造函数,您可以重载,std::swap
如下所示。
推荐阅读
- c++ - std::bind 在 std::array 的 operator[] 上
- php - 使用 PHPUnit 和 Laravel 测试聚合
- java - 从 swagger 向 REST WebServices 发送请求结束到 401 并且未经授权
- localization - 如何在空手道框架中使用小黄瓜本地化?
- angular - 如何从 Angularfire 承诺创建的可观察对象中捕获错误
- yaml - 如何动态迭代从机器人框架中的yaml文件导入的变量
- javascript - 带有 javascript 的单选按钮
- python - 当我更改权限文件 ir.model.access.csv 并升级模块时,我有一个问题缺少字段“对象”(model_id) 的必需值
- pyiron - 在 HPC 集群中运行 Vasp 作业
- numpy - 如何将形状(4、1、1)的numpy数组重塑为(4、2、1)?