C++内蔵データ型

1449 ワード

一般的なデータ型は私たちがよく知っていて、私たちの数学の習慣にも合っています.例えばint、double、floatなど、自分はこの方面に詳しいですが、我慢して第三章のdealing with dataを見終わって、やはり自分は収穫があります.だから私はいくつかの異常なデータ型を列挙しました
1.unionタイプ
C++の共用体でstructに似ています定義を見てみましょう
union one4all
{int a;
float b;
double c;
}

ここでone 4 allは1つの変数で3の異なるタイプのデータを格納することができるが、最大のstructとの違いは、これらのタイプが同じファミリーのデータでなければならないことであり、例えば、例ではすべてが整数タイプのデータであることである.またunionというタイプのデータはメモリ上ではちょっと特別で、C++にstructのサイズは含まれる各基本データの総和のサイズですが、unionは確かにメモリ占有量が最も大きいデータによってそのサイズ(例はdoubleタイプのサイズで、一般的には8バイト)で、他のタイプのデータを格納する場合、常にこのメモリに再書き込みされます.これは、unionデータが一度に1つのデータしか表示されない理由です.Unionはメモリを非常に節約する場所に適していますが、現在、コンピュータがますます大きくなっているメモリにとって、このデータ形式は徐々に淘汰されています.
2.arrayテンプレートタイプ
C++のarrayクラスとvectorの違い:vectorはランダムにアクセスでき、ストレージスペースは連続的ではありませんが、arrayは連続的なストレージスペースであり、c-style stringに比べてarrayは文字列名による直接付与をサポートします.
#include
#include
#include
using namespace std;
int main()
{
     array arr{1,2,3,4};
     array arr1;
     arr1 = arr;
     char arr2[20];
     char arr3[20] = "helloworld";
     //arr2 = arr3;    
}

3.enumerationタイプ
enum e = {red=2,blue=3,purple=5,green=7};
int color  = blue;//             
// e color  = 4;not valid, compiler can't do that autoatically
e color = e(4);//this is Ok using a type cast
//++blue;not valid

列挙列挙タイプは付与番号のみを定義し、他の演算子は定義されていないため、++操作は合法ではありません.