我正在研究c++
代码,需要在列表的给定索引处插入项目。我有两个清单:
list <int> objectIdList; //This list will save id's of object
list <double> objectIdDtimeList; //This list will save time duration of each particular object id.
我有一个代码将所有对象ID都保存在objectIdList
中,如下所示:
Index Value
[0] 3
[1] 6
[2] 2
现在,我需要在objectIdDtimeList
中保存这些对象ID(3、6、2)的持续时间。我的计划是将持续时间保存在索引中的列表中,索引即对象ID。例如,对于对象ID 3
,其总持续时间将保存在索引为3
的列表中。对于对象ID 6
,其持续时间将保存在索引6中。
为此,我计划如下使用list.insert()
:
time_t start, end;
time(&start);
/*
* SOME CODE HERE
* SOME CODE HERE
*/
for (auto id : objectIdList)
{
time(&end);
double time_passed = difftime(current, start); //Getting the time duration in seconds
list<int>::iterator it = objectIdList.begin();
advance(it, id); // iterator to point to object id index
objectIdDtimeList.insert(it, time_passed);
}
但是上面的代码给出了以下错误:
Severity Code Description Project File Line Suppression State
Error (active) E0304 no instance of overloaded function "std::list<_Ty, _Alloc>::insert [with _Ty=double, _Alloc=std::allocator<double>]" matches the argument list
Severity Code Description Project File Line Suppression State
Error C2664 'std::_List_iterator<std::_List_val<std::_List_simple_types<_Ty>>> std::list<_Ty,std::allocator<_Ty>>::insert(std::_List_const_iterator<std::_List_val<std::_List_simple_types<_Ty>>>,unsigned __int64,const _Ty &)': cannot convert argument 1 from 'std::_List_iterator<std::_List_val<std::_List_simple_types<_Ty>>>' to 'std::_List_const_iterator<std::_List_val<std::_List_simple_types<_Ty>>>'
有什么方法可以实现此功能。还有其他选择吗?谢谢
答案 0 :(得分:2)
您在这里混合了两种不同的迭代器类型。
list<int>::iterator it = objectIdList.begin();
这是objectIdList
的迭代器,但是要调用objectIdDtimeList.insert(...)
,则需要objectIdDtimeList
的迭代器。因此,尝试将上述行更改为
auto it = objectIdDtimeList.begin();
使用id
推进正确的迭代器应该仍然有效,并且插入应该成功。