string::size_typeタイプ
2425 ワード
string::size_typeタイプstring::size_typeタイプ論理的にはsize()メンバー関数は、整数値を返すか、2.2節「推奨」で説明した符号なし整数を返すべきであるようです.しかし、実際にはsize操作はstring::size_を返します.typeタイプの値.私たちはこのタイプについていくつかの説明が必要です.stringクラスタイプと他の多くのライブラリタイプは、いくつかのパートナータイプ(companion types)を定義しています.これらのパートナータイプは、ライブラリタイプの使用をマシンに依存しないようにします(machine-independent).size_typeはこれらのパートナータイプの1つです.unsigned型として定義されています(unsigned intまたはunsigned long)は同じ意味を有し、任意のstringオブジェクトを格納するのに十分な長さを保証することができる.stringタイプによって定義されたsize_typeタイプを使用するには、プログラマは、使用されたsize_typeタイプがstringクラスによって定義されていることを説明するために、役割ドメインオペレータを追加する必要がある.stringのsize操作結果を格納する変数はstring::size_typetypeタイプ.特に重要なのはsizeの戻り値をint変数に与えないことである.string::size_を知らないけどtypeの正確なタイプは、unsigned型であることがわかります(2.1.1節).任意の所与のデータ型について、そのunsigned型が表すことができる最大正数値は、対応するsignedよりも2倍大きい.この事実は、size_typeが格納するstringの長さがintが格納できる2倍であることを示している.int変数を使用するもう一つの問題は、一部の機械ではint変数の表示範囲が小さすぎて、実際には長くないstringを格納できないことであるオブジェクト.16ビットint型のマシンでは、int型変数は最大32767文字のstringオブジェクトのみを表すことができます.ファイルの内容を1つ収容できるstringオブジェクトは、この数字を簡単に超えます.したがって、オーバーフローを回避するためにstringオブジェクトsizeを保存する最も安全な方法は、標準ライブラリタイプstring::size_を使用することです.type.
vector vecを定義しました.そしてpush_backは3つの数を数えたが、なぜfor(vector::size_type j=vec.size()−1;j>=0; --j)死の循環が現れ、ずっとスクリーンを塗っている.for(int j=vec.size()−1;j>=0; --j)ところが正しいネットユーザーの返事:私の完全なコードは以下の通りです:void vec(){vector vec;vec.push_back(3);vec.push_back(4);vec.push_back(5);cout=0;--j)/error for(int j=vec.size(-1;j>=0;--j)/ok cout<}ネットユーザーの返事:
C/C code
size_size_size_size_size_size_size_size_size_size_size_size_size_size_size_size_size_size_sizetypeは符号なし整数であり、j=0の場合、1を減らす操作では-1は得られず、最大の符号なし整数が得られるため、ループを終了することはありません.typeはunsigned int型で、あなたはこのようにして、j=0の後で、j--、それではjは-1であるべきで、しかしunsigned属性、それを1つの正数に変えて、だから無限に循環することができます!!!网友回复:3楼4楼正解网友回复:私はやはり手をつけるのが少し遅いようです.しかし、私の本来の意味はvectorの中の値を逆順に出力したいのですが、どちらがもっと合理的な解決策を与えることができますか?3階、4階の見解は正確で、私の困惑をよく説明しました.逆シーケンス出力vectorの方法を提供し続けることができればもっと良いです.rbegin,rend
vector vecを定義しました.そしてpush_backは3つの数を数えたが、なぜfor(vector::size_type j=vec.size()−1;j>=0; --j)死の循環が現れ、ずっとスクリーンを塗っている.for(int j=vec.size()−1;j>=0; --j)ところが正しいネットユーザーの返事:私の完全なコードは以下の通りです:void vec(){vector vec;vec.push_back(3);vec.push_back(4);vec.push_back(5);cout
C/C code
Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/
#include
#include
using namespace std;
int main()
{
vector vec;
vec.push_back(10);
vec.push_back(11);
vec.push_back(12);
for(vector::size_type i=0; i
size_size_size_size_size_size_size_size_size_size_size_size_size_size_size_size_size_size_sizetypeは符号なし整数であり、j=0の場合、1を減らす操作では-1は得られず、最大の符号なし整数が得られるため、ループを終了することはありません.typeはunsigned int型で、あなたはこのようにして、j=0の後で、j--、それではjは-1であるべきで、しかしunsigned属性、それを1つの正数に変えて、だから無限に循環することができます!!!网友回复:3楼4楼正解网友回复:私はやはり手をつけるのが少し遅いようです.しかし、私の本来の意味はvectorの中の値を逆順に出力したいのですが、どちらがもっと合理的な解決策を与えることができますか?3階、4階の見解は正確で、私の困惑をよく説明しました.逆シーケンス出力vectorの方法を提供し続けることができればもっと良いです.rbegin,rend