「C++でコンピュータサイエンティストのように考える方法」のコード例をいくつか書いています。これは、トランプタイプのオブジェクトとデッキの処理に関するものです。私はこの状況に直面しています:
int Card::find(const std::vector<Card>& deck) const {
size_t deckSize = deck.size();
for (size_t i=0; i<deckSize; i++)
if (equals(*this, deck[i])) return i;
return -1;
}
Visual Studio2010のC++のベクターでテキストのように「.length()」を使用することはできませんでした。代わりに、std :: size_typeを返す.size()を使用する必要がありました。私が読んでいるように、さまざまなアーキテクチャでの問題を回避するためにsize_tを使用してそれを回避できると思いましたが、返すかどうか疑問に思っていますがi
、整数よりも大きいので、プログラムをクラッシュさせますか?
[私の質問でより具体的に編集:]カードよりも大きなものにベクトルを使用し始めたら、コンパイラの不一致の警告のためにunsigned intの使用を検討しましたが、unsigned intまたはintを返すにはいくつかの問題があると感じます:1) intは十分に大きなベクトルインデックスを取りません。2)unsigned intを返すと、-1は返されません。3)unsigned intは、すべてのアーキテクチャでsize_tと同じではありません(ARM Cortex-M3でマイクロコントローラープログラミングも行っています)。
十分な大きさのベクトルがある場合はどうすればよいですか?