所以我有以下方法:
template <class DT> //needs testing
DT& LinkedSortedArrays<DT>::find (const DT& key)
{
list<SortedArray<DT>>::iterator it = SAList.begin();
for( ; it != SAList.end(); ++it){
try{
if (it == SAList.begin() && key < (*it)[0]) throw Exception();
return (*it).find(const_cast<DT&> (key));
} catch (ArrayException e) {
}
}
throw Exception();
}
我之前已经定义了类Exception
和ArrayException
. 每次在当前搜索的特定 Array 类中找不到时(*it).find(const_cast<DT&> (key))
都会抛出 ArrayException 。是一个。代码编译得很好。但是我还没有在我的程序中尝试过。为什么?我需要有人根据我所做的以下假设来确认或更正我:key
SAList
STL List
- 每当
if (it == SAList.begin() && key < (*it)[0]) throw Exception();
抛出异常,就意味着它会抛出for循环之外,甚至是方法之外,对吧? - 我几乎可以肯定最后一行
throw Exception();
会在方法之外抛出异常。 - for循环的排列方式,不会跳过SAList的第一个元素吧?我的意思是,我在整个互联网上都看到了这个特定的代码,它用于迭代列表的所有元素,就好像它是标准的或完美的一样,但是……这让
++it
我的大脑有些扭曲。帮助? - 我收到一个错误
can't convert const int to int&
(因为find()
in(*it).find(const_cast<DT&> (key))
不是属于的LinkedSortedArrays
那个,而是另一个需要 DT& 变量并且LinkedSortedArrays
'sfind()
具有 const DT& 类型的参数的错误),我发现一个可能的解决方案可能是将它写为const_cast<DT&> (key)
. 我需要对此发表第二意见。
最后,我了解这是否不是一个具体问题,因此我会被否决和/或问题被关闭。我真的不知道还能去哪里问。如果是我在错误的地方问的情况。我很抱歉。