【初心者歓迎】C/C++室 Ver.19【環境依存OK】
■ このスレッドは過去ログ倉庫に格納されています
0226デフォルトの名無しさん
2005/06/30(木) 10:30:21mapの使用を終える前にkeyをdeleteしてしまうとまずいのでしょうか?
しかし、最初のループでdeleteをせずに後のループでdelete &(it->first)と言う様にやってもダメな様だし
どうすれば良いのでしょうか?やりたい事は文字列をキーにしてunsigned int二つ分のデータを値にする事です。
#include <iostream>
#include <string>
#include <map>
using namespace std;
void itoa(char* str,unsigned int num) //数値から数字への変換関数
{unsigned int radix=10;unsigned int i=0;while(num){str[4-i]=(char)(num%radix+48);num/=radix;i++;}}
int main(){
map <string,unsigned int*> range;int i=0;string *index = NULL;char tmp[5] = "";while(i<10){itoa(tmp,i);index = new string(tmp);
range[*index] = (unsigned int*)malloc(sizeof(unsigned int)*2);(range[*index])[0] = i;(range[*index])[1] = i+10000;
delete index;i++;}i=0;for(map<string,unsigned int*>::const_iterator it = range.begin();
it != range.end(); ++it){
cout << "key:" << it->first << "\tvalue1:" << (it->second)[0] << "\tvalue2:" << (it->second)[1] << endl;free(it->second);}
■ このスレッドは過去ログ倉庫に格納されています