所以,我有两个文本框(早期定义)和两个向量:
std::vector<TCHAR*> v1;
std::vector<int> v2;
和地图:
std::map <TCHAR*, int> m1;
std::map <TCHAR*, int>:: iterator i1;
地图初始化:
void mapInit()
{
m1[L"one"] = 1;
m1[L"two"] = 2;
m1[L"three"] = 3;
m1[L"four"] = 4;
m1[L"five"] = 5;
m1[L"six"] = 6;
m1[L"seven"] = 7;
m1[L"eight"] = 8;
m1[L"nine"] = 9;
m1[L"ten"] = 10;
}
我应该从第一个文本框中获取单词“one”并将其写入向量'v1'(文本框将来必须有更多单词,所以没有向量我不能这样做)。之后,程序必须通过键名在映射中找到所需的值:
TCHAR *zr = v1.at(0); // v1.at(0) has the word `one` atm
i1 = m1.find(zr); // want to get value `1` by key `one`
int z = i1->second; // and get it completely
我得到一个调试断言错误“map/set iterator not dereferencable” .. :(
如果我将做所有相同但将其更改为 L"one":
TCHAR *zr = L"one"; //
i1 = m1.find(zr);
int z = i1->second;
所以它会起作用......为什么它不能与向量值一起使用?我用调试器检查了我的向量值——它也是'L"one"'!但无论如何都不起作用...
注意:我也试图找到没有 .find() 方法的单词:
TCHAR *zr = v1.at(0);
int z = m1[zr]; // - now `z` returns a null...
如果我将 'v1.at(0)' 更改为 L"one",它将再次起作用
Heeeeeelp :( 为什么它不起作用?
=================================================
Yeeeeeeeah 现在它可以工作了!:) 轻松修复:
wstring zr = v1.at(0);
int z = m1[zr];
双喜临门)谢谢大家的帮助兄弟:)