[英]How do I declare a vector of vector::size_type?
我想要一個矢量,其元素的類型為vector :: size_type
但是,您無法聲明:
vector<vector::size_type> aVec;
因為size_type是模板本身的一部分,所以你必須使用類型本身,我需要這樣的東西:
vector<vector<T>::size_type> aVec;
但是T應該是什么? 這真的是一個循環問題。 :)
如果vector剛剛使用size_t作為其大小類型(但沒有一個特殊的typedef用於size_type,可能會根據向量所持有的類型而變化),我可以這樣做:
vector<size_t> aVec;
但事實並非如此。 我懷疑它有一個合理的理由允許它變化,但它通過讓它成為模板化矢量類的一部分而不是它的外部而使這變得困難。
思考?
std::vector<>::size_type
是std::size_t
類型的靜態成員類型,所以你應該使用std::vector<std::size_t> vec
是安全的
為什么不使用vector<vector<int>::size_type> myVector;
? 如果你從不在其他任何地方使用類型vector<int>
,那么它不會花費任何費用,因為模板instanciation在某種程度上是懶惰的。 如果您使用的話,可以使用除int
之外的任何其他類型。
vector<T>::size_type
與vector<T'>::size_type
不同是不太可能的。
(我在這里重寫一個答案,這次沒有對標准做出任何聲明。)
您可以對類型進行最佳猜測 (可以是std::size_t
或std::vector<void*>::size_type
)並在事后檢查。
std::vector<std::size_t> Avec;
static_assert(std::is_same<decltype(Avec)::size_type, decltype(Avec)::value_type>(), "bad guess");
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.