gpt4 book ai didi

c++ - 在模板中使用 operator<

转载 作者:行者123 更新时间:2023-11-28 01:20:47 29 4
gpt4 key购买 nike

我有一个带参数 T 的类模板,它是一个自定义容器。 T will 可以是指针或引用。在这个模板中,我有一个函数可以将我的对象放入容器中。我想用 operator< 按顺序放置新元素,但问题是我不知道 T 是指针还是引用。如果 T 是一个指针,我必须取消引用它,否则不能。

我找到了 std::is_pointer::value 但当我尝试创建一个带有 int T 类型的容器时出现编译时错误。


void insert(int row, T t){
int i = 0;
for (; i < size && *t < *matrix[i]; i++) { //or t < matrix[i] if T is a reference
new_matrix[i] = matrix[i];
}

最佳答案

您可以创建其他方法来统一insert 实现,例如:

template <typename T> T& deref_ptr(T* p) { return *p; }
template <typename T> T& deref_ptr(T& p) { return p; }

然后用(通用)deref_ptr(t)(和*matrix[i] 替换您的*t(指针版本)通过 deref_ptr(matrix[i]):

void insert(int row, T t){
for (int i = 0; i < size && deref_ptr(t) < deref_ptr(matrix[i]); i++) {
new_matrix[i] = matrix[i];
}
}

关于c++ - 在模板中使用 operator<,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56392460/

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