、文字列や文字を使って配列をインデックスすることはできますか?例えば
double myArray[3] = {0.0};
myArray["SSN_1"] = 2.0;
myArray["SSN_2"] = 3.0;
myArray["SSN_3"] = 2.0;
for(... how? ...)
{
... Print ... but, how? ...
}
ご参照をお持ちの場合は、リンクしてください。
、文字列や文字を使って配列をインデックスすることはできますか?例えば
double myArray[3] = {0.0};
myArray["SSN_1"] = 2.0;
myArray["SSN_2"] = 3.0;
myArray["SSN_3"] = 2.0;
for(... how? ...)
{
... Print ... but, how? ...
}
ご参照をお持ちの場合は、リンクしてください。
cにはありません。整数だけが許可されています。
連想コンテナは
struct double_map_item {
char *key;
double value;
};
のような単純な構造体を構築することができ、そのキーの値によって項目を見つけるための簡単な方法のためのbsearch()のマニュアルページの例を見てみましょう。
もちろん、これは非常に単純化された実装であり、より完全で堅牢な実装のためには、ハッシュテーブルについて読む必要があります。
this commentについては、Cの文字定数のタイプはint
ので
array['x'] = value;
は有効ですが、あなたが唯一使用できる
注:your own comment以下、あなたがC++コードを見た可能性があります。 C++では、[]
演算子をオーバーロードして、const char *
をパラメータとし、ハッシュテーブルまたは他の方法を使用して、指定されたキーに一致する要素を検索することができます。
しかし、cでは不可能です。
1は、C++でのこのような容器を実装した場合、次の例では、
#include <iostream>
#include <map>
class Array {
public:
Array();
double operator[](const char *const key);
void insert(const char *const key, double value);
private:
std::map<const char *, double> m_items;
};
Array::Array()
{
}
double
Array::operator[](const char *const key)
{
return m_items[key];
}
void
Array::insert(const char *const key, double value)
{
m_items.insert(std::pair<const char *, double>(key, value));
}
int
main(void)
{
Array items;
items.insert("SSN_1", 2.0);
items.insert("SSN_2", 3.0);
items.insert("SSN_3", 2.0);
std::cout << items["SSN_1"] << std::endl;
return 0;
}
文字は整数型なので、インデックスとして機能することができます(ほとんどの場合、非常に有用な方法ではありません)。 –
私はどこかで、おそらく文字列検索アルゴリズムの実装で見たと思います。 – anonymous
しかし、 '[] '演算子をオーバーロードすることができるので、c、C++ではありません。 –
、が、これは単に基本的な概念の説明のために、あなたの代わりにstd::mapを使用するべきであることを注意してください、続行する方法を説明しますいいえ、それはありません.... – OldProgrammer
4kの担当者と、私はあなたの最初の呼び出しポートされている基本的な検索を期待していただろう。 –