相关疑难解决方法(0)

C++ std :: set update很乏味:我无法更改元素

我发现更新操作std::set很繁琐,因为cppreference上没有这样的API .所以我现在做的是这样的:

//find element in set by iterator
Element copy = *iterator;
... // update member value on copy, varies
Set.erase(iterator);
Set.insert(copy);
Run Code Online (Sandbox Code Playgroud)

基本上迭代器返回的Set是a const_iterator,你不能直接改变它的值.

有一个更好的方法吗?或者也许我应该std::set通过创建我自己的(我不知道它是如何工作的...)来覆盖.

c++ stl set

66
推荐指数
5
解决办法
2万
查看次数

stl设置迭代器

我有一个带有Cell类对象的stl集

class Cell
{
public:
    //Ctor/Dtor
    Cell(size_t cellId=0,int x =0,int y = 0,size_t t = 0):m_cellId(cellId),m_x(x),m_y(y),m_t(t),m_color(WHITE),m_pCellId(0),m_regNum(0){}
    ////////////////////
    //    Mutators    //
    ////////////////////
    void schedNode(size_t t,int nodeId){m_sched[t] = nodeId;}
    void setColor(color c){m_color = c;}
    void setParentId(size_t pId){m_pCellId = pId;}
         //.....
}
Run Code Online (Sandbox Code Playgroud)

每个Cell都有m_xm_y(成员)坐标+其他数据成员(m_t,m_color,m_pCellId,m_regNum)

comapareCells类仅用于根据实际的m_x和m_y坐标查找单元格:

class comapareCells
{
public:
    bool operator()(const Cell& lCell,const Cell& rCell)
    {
        if(lCell.getX() < rCell.getX())
            return true;
        else if(lCell.getX() == rCell.getX())
            return (lCell.getY() < rCell.getY());
        else
            return false;
    }

};
Run Code Online (Sandbox Code Playgroud)

我运行以下命令以找到"实际单元格": c …

c++ iterator stl set

1
推荐指数
1
解决办法
1173
查看次数

标签 统计

c++ ×2

set ×2

stl ×2

iterator ×1