c++ - 添加到 AVL 树的 Int 输入(用于日期)不正确
问题描述
我的问题在 C++ 中。
我有一个经过测试并且工作正常的类 AVL 树和一个 Map 树类。
我创建了一个这样的地图树:
Maptree<string, Mapatree<Date, Maptree<string, int>>> personservice;
然后尝试像这样向地图树添加一个条目:
personservice["Mike"][Date(0, 15, 30, 30)]["Car"]++;
Mike 和 Car 已正确保存在 Maptree 中,但 Date 中的 int 值不正确,大约为 20000+。
这是 Maptree 和 Date 类:
template <class K, class V>
class Maptree
{
public:
const V &operator[](const K &) const;
V &operator[](const K &);
private:
class Entries
{
public:
Entries(const K &c) : key(k), value(v) {}
K key;
V value;
bool operator<(const Entries &e) const { return key < e.key; }
};
AVLTree<Entries> entries;
};
class Date{
public:
Date();
bool operator <(const Date& date) const;
Date(int days, int hours, int minutes, int seconds) {
days = days;
hours = hours;
minutes = minutes;
seconds = seconds;
}
private:
int days;
int hours;
int minutes;
int seconds;
friend std::ostream& operator << (std::ostream&, const Date& date);
friend std::istream& operator >> (std::istream&, Date& date);
};
您知道什么可能导致 Date 中的整数值不正确地保存在 Maptree 中吗?
解决方案
days = days;
hours = hours;
minutes = minutes;
seconds = seconds;
这四个语句,在构造函数中,将四个构造函数参数的值赋值给自己。换句话说,这绝对没有任何作用。如果你只看这四行 C++ 代码,在任何上下文之外,你必须同意它们除了将四个对象的值分配给它们自己之外,什么都不做。这仍然是什么。
您的明确意图是在构造此类的实例时初始化同名的类成员。您的 C++ 教科书将包含有关正确使用构造函数的初始化部分的更多信息,如下所示:
Date(int days, int hours, int minutes, int seconds)
: days{days},
hours{hours},
minutes{minutes},
seconds{seconds}
{
}
推荐阅读
- jersey - 使用 forEach 时泽西过滤器开始异常
- python - 如何计算几个 cProfile 结果的平均结果?
- flutter - 如何停止颤振应用程序中的firebase错误
- c++ - CMake 生成的 cURLpp Visual Studio 解决方案未正确构建
- postgresql - IntelliJ IDEA:如何在不插入连接运算符的情况下编写 SQL 注释?
- angular - 用于多种 css 样式条件的 ngClass
- reactjs - 标准化状态的 Redux 选择器
- c - 链表上合并排序的段错误
- python - 在 Google Compute Engine VM 上的 crontab 中安排 Python 脚本
- php - 显示 Woocommerce 产品的默认折扣价格和百分比