|
@@ -221,6 +221,12 @@ namespace nanxing_extend
|
|
|
return sk;
|
|
|
}
|
|
|
|
|
|
+ [[nodiscard]]
|
|
|
+ auto Delete_node(K _key)noexcept ->std::variant<Skip_result,V> //由于V由泛型决定可能是一个指针,因此直接将这个类型返回交由用户自主处理
|
|
|
+ {
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
[[nodiscard]]
|
|
|
auto search(K _key) noexcept ->std::variant<Skip_result,V>{ //不涉及任何内存分配相关任务,因此是异常安全的
|
|
|
#ifdef NANXING_THREAD_
|
|
@@ -266,6 +272,7 @@ namespace nanxing_extend
|
|
|
catch(std::bad_alloc)
|
|
|
{
|
|
|
throw random_error();
|
|
|
+ return;
|
|
|
}
|
|
|
std::mt19937 rnd(std::chrono::system_clock::now().time_since_epoch().count());
|
|
|
for(int i=0;i<1024;i++)
|
|
@@ -275,7 +282,7 @@ namespace nanxing_extend
|
|
|
}
|
|
|
|
|
|
|
|
|
- void Print()
|
|
|
+ void Print()noexcept
|
|
|
{
|
|
|
ptr tmp=head[0]->next_node[0];
|
|
|
while(tmp!=nullptr&&tmp->next_node[0]!=nullptr) //这里用了截断的技巧,即第一个条件不成立就不会触发第二个条件运行
|