【发布时间】:2018-09-26 13:56:36
【问题描述】:
所以我正在尝试编写一个将元素添加到我的数组的方法。我的 find_key() 方法返回一个指针,该指针指向一个等于或大于在现有数组中找到的元素。有没有办法找到我的 find_key() 指针指向的元素的索引?
这是我目前正在使用的内容
template<typename K, typename V>
bool MapSet<K,V>::add(Node<K,V> n)
{
Node<K, V> *ptr = find_key(n.first);
if (size() == capacity_)
{
capacity_ *= 2; // Double capacity
auto *new_data = new [capacity_]; // New array with double capacity
copy(ary_, ary_+last_, new_data); // Copy over
swap(ary_, new_data); // Swap pointers
delete [] new_data; // Delete old array pointer (old since swapped)
}
if (size() == 0)
{
ary_[0].first = n.first;
ary_[0].second = n.second;
return true;
}
else if (ptr == ary_+last_)
{
ary_[ptr].first = n.first;
ary_[ptr].second = n.second;
return true;
}
else if ((*ptr) == n.first)
{
return false;
}
else if ((*ptr) !== n.first)
{
ary_[ptr-1].first == n.first;
ary_[ptr-1].second == n.second;
return true;
}
}
【问题讨论】:
-
请注意,由于您在执行重新分配之前找到了
ptr,如果ptr指向ary_的元素,那么每当发生重新分配时,它将是danling 指针。虽然现在我重新阅读了这个问题,但似乎这就是您可能要解决的问题。 -
您可能正在寻找std::distance。
-
@François Andrieux 谢谢!
标签: c++ arrays c++11 pointers indexing