gpt4 book ai didi

c++ - 删除包含结构的 vector 的 vector

转载 作者:行者123 更新时间:2023-11-30 03:24:11 24 4
gpt4 key购买 nike

c++ 菜鸟在这里。我正在创建一个有限的 HashMap ,并将结构存储在 vector 中的 vector 中。即:

struct bucket{
V value;
std::time_t time;
};

std::vector<std::vector<bucket>> limmap;

template <typename K, typename V>
ece2400::limited_hash_map<K,V>::limited_hash_map::limited_hash_map(std::size_t num_buckets , std::size_t bucket_size){
for(int i = 0; i < num_buckets; i++){
std::vector<bucket> temp(bucket_size);
limmap.push_back(temp);
}
}
  1. 使用数组而不是 vector 会更好吗?
  2. 我将如何着手创建析构函数?

谢谢!

最佳答案

首先,我不知道函数头是否正确,但我们假设它是正确的,考虑到您的问题,这并不重要。

<强>1。使用数组而不是 vector 会更好吗?

如果您指的是 C 风格的数组,那么我建议您不要使用它们。它是 C++,使用标准库。当然,C 风格的数组速度更快但更容易出错。另一方面,如果您的意思是 std::array,那么答案是否定的(有点)。要创建 std::array 对象,描述数组将包含的元素数量的参数必须是编译时已知的 (constexpr)。这可能不适用于您的函数,因为您可以这样调用它:

int bucket_size;
std::cin >> bucket_size; // value not known at compile-time

limited_hash_map(num_buckets, bucket_size);

只需坚持 std::vector 就可以了:)

<强>2。我将如何着手创建析构函数?

你不需要。 bucket 不会在构造函数中分配任何资源,因此您不需要释放任何东西。最终 vector 将被销毁,当它们这样做时,它们将销毁它们持有的所有对象,在您的情况下是 bucket 对象。由于它们不需要任何显式析构函数,因此它们将被自动销毁,没有任何问题。

希望这有帮助:)

关于c++ - 删除包含结构的 vector 的 vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49865322/

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