64,654
社区成员
发帖
与我相关
我的任务
分享
if (set_iter != candidate_records.end())
{
BigramPairRecord tmpRecord(*set_iter);
tmpRecord.count += stBigramPairRecord.count;
tmpRecord.distance += stBigramPairRecord.distance;
candidate_records.erase(set_iter++);
candidate_records.insert(set_iter, tmpRecord)
}
正确的修改方法,但是估计这不是lz想要的,因此给出另外一种不太推荐的方法
const_cast<int&>(set_iter->count) += stBigramPairRecord.count;
const_cast<int&>(set_iter->distance) += stBigramPairRecord.distance;
if (set_iter != candidate_records.end())
{
BigramPairRecord tmpRecord(*set_iter);
tmpRecord.count += stBigramPairRecord.count;
tmpRecord.distance += stBigramPairRecord.distance;
candidate_records.erase(BigramPairRecord++);
candidate_records.insert(BigramPairRecord, tmpRecord)
}
正确的修改方法,但是估计这不是lz想要的,因此给出另外一种不太推荐的方法
const_cast<int&>(set_iter->count) += stBigramPairRecord.count;
const_cast<int&>(set_iter->distance) += stBigramPairRecord.distance;
void test()
{
BigramPairRecord stBigramPairRecord;
set<BigramPairRecord> candidate_records;
set<BigramPairRecord>::iterator set_iter = candidate_records.find(stBigramPairRecord);
if (set_iter != candidate_records.end())
{
candidate_records.erase(set_iter);
BigramPairRecord newOne(*set_iter);
newOne.count += stBigramPairRecord.count;
newOne.distance += stBigramPairRecord.distance;
candidate_records.insert(newOne);
//set_iter->count += stBigramPairRecord.count;
//set_iter->distance += stBigramPairRecord.distance;
}
}