私は簡単な変換プログラムを書いていますが、これに似たものを作成したいと思います。
//Ratios of a meter
enum Unit_Type
{
CENTIMETER = 0.01, //only integers allowed
METER = 1,
KILOMETER = 1000
};
このようにデータを整理できる簡単なデータ構造はありますか?
あんまり。C ++ 11では、列挙型に非常に優れた新しい機能がいくつか導入されています。たとえば、特定の内部データ型(などchar
)を列挙型に割り当てることができますが、floatやその他の非整数型を追加する方法はありません。
あなたが実際にやろうとしていることに応じて、私はこれのためにいくつかの単純な古い構造体を使用します:
struct UnitInfo {
const char *name;
float ratio;
};
UnitInfo units[] = {
{"centimeter", 0.01f},
{"meter", 1},
{"kilometer", 1000},
{0, 0} // special "terminator"
};
次に、イテレータとしてポインタを使用して、使用可能なすべてのユニットを反復処理できます。
float in;
std::cout << "Length in meters: ";
std::cin >> in;
// Iterate over all available units
for (UnitInfo *p = units; *p; ++p) {
// Use the unit information:
// p[0] is the unit name
// p[1] is the conversion ratio
std::cout << (in / p[1]) << " " << p[0] << std::endl;
}
これが実際の値(のような100 * CENTIMETER
)と一緒にそれらの比率を使用することに関するものである場合、C ++ 11のユーザー定義リテラルはあなたにとって何かかもしれません:
constexpr float operator"" _cm(float units) {
return units * .01f;
}
これは、次のように使用できます。
float distance = 150_cm;
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加