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
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