編集:解決方法、私は知っているが、私はなぜ理解していない。どのようにunordered_map原因sigsegv
私は
unordered_map<int,T> variables;
に
tr1::unordered_map<int,T> variables;
からvariables
宣言を変更し、それが仕事の罰金です。
理由がわかっている場合は、回答に記入してください。
私は非常に大きなプログラムを持っているので、どのコードをここに持ってくるべきか分かりません。
派生クラスを継承する抽象クラスがあります。 要約はプライベートメンバーとしてunordered_map<int,int>
(テンプレート)、パブリックメソッドinsert(int,int)
を持っています。
派生クラス最初int
カウンタよう使用
、unordered_map<int,int>
コンテナに要素を挿入するために、基本クラスをinsert
方法を使用して、最初の11個のインサート要素はO.K.行く0で始まりますしかし12番目の要素では、私はsigsegvを取得し、stl_function.h(209)のstruct equal_to
に障害があります。
デバッガで私は、unordered_mapのbucket_countが11に等しいことを見てきました。おそらくそれは何かの手掛かりです。
マイコンパイラはgcc 4.6.1です。
多分あなたはがの場合、unordered_map.insert
にsigsegvを引き起こすことができますか?
ありがとう、貧しい私の英語についてはごめんなさい。
私が知っている場合、私は特定のコードを持ちます。
EDIT:
virtual void Insert(int arrayPlace, T value)
{
if (!isReadOnly)
{
if (IsValueDataValid(value))
{
variables[arrayPlace] = value;
}
else
{
throw 2;
}
}
else
{
throw 4;
}
};
宣言は次のとおりです: これはinsert
方法である
tr1::unordered_map<int,T> variables;
arrayPlace
== 11、そして、それがどのようなvalue
等しいdosn't SIGSEGVが起こりました。
コンテナを間違って使用していますが、問題の原因となるコードがないと、誰もこの質問に答えられません。コードがたくさんある場合は、問題を再現するために必要な最小限の量に減らしてください。 –
あなたが証明できなければ[それはあなたのせいだと思う](http://www.codinghorror.com/blog/2008/03/the-first-rule-of-programming-its-always-your-fault.html)さもないと。 –
エラーは、コード内の他の場所にあります。順序付けされていないマップには何も問題はありません。 –