gpt4 book ai didi

c++ - 如何以通用方式交换两个值?

转载 作者:搜寻专家 更新时间:2023-10-31 02:11:22 24 4
gpt4 key购买 nike

考虑这段代码。

template<typename E>
void swap(E &_Left, E &_Right){
E tmp = _Left;
_Left = _Right;
_Right = tmp;
}

template<typename E>
void bubble_sort(E begin, E end){
for(E i = begin; i != end - 1; ++i){
for(E j = end - 1; j != i; --j){
if(*j < *(j-1)){
swap(*j, *(j - 1)); // here
}
}
}
}

我知道 swap 函数是如何实现的。但是如果我不想用一个函数来交换值,交换值时如何指定临时变量的类型。 template 也是需要的。

最佳答案

how to specify the type of temporary variable when swapping the values

如果要明确指定类型,可以使用std::iterator_traits :

typename std::iterator_traits<E>::value_type tmp = ...;

从C++11开始,你可以直接使用auto,比如

auto tmp = ...;

顺便说一句:不要使用以下划线开头紧跟大写字母的名称;它们总是保留给实现。

关于c++ - 如何以通用方式交换两个值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43707666/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com