0
當我取消引用容器的迭代器(例如*v.begin()
)時,我總是獲得對包含類型的引用。然後,我不能使用decltype
來初始化另一個容器。使用decltype來初始化容器
int main()
{
vector<int> a;
vector<decltype(*a.begin())> b;
return 0;
}
我該如何解決這個問題?
當我取消引用容器的迭代器(例如*v.begin()
)時,我總是獲得對包含類型的引用。然後,我不能使用decltype
來初始化另一個容器。使用decltype來初始化容器
int main()
{
vector<int> a;
vector<decltype(*a.begin())> b;
return 0;
}
我該如何解決這個問題?
選擇1:
的最簡單的方式來聲明b
是使用decltype(a)
作爲容器類型。
decltype(a) b;
選擇2:
間接的下一級中聲明b
是使用decltype(a)::value_type
作爲包含的類型。
std::vector<decltype(a)::value_type> b;
選擇3:
最迂迴的方式來聲明b
是使用std::remove_reference
刪除從iterator的反引用的參考。
std::vector<std::remove_reference<decltype(*a.begin())>::type> b;
使用'std :: remove_reference'。看看它。 –
'std :: vector b;' –
Snps