C 直接修改std set元素的方法

2021-09-05 12:30:58 字數 705 閱讀 5267

元素在std::set中構造後,如果需要查詢,則呼叫find成員函式,但是該方式有乙個致命的缺陷,就是返回的是乙個常指標,無法通過指標更改元素的值。這樣做也是有意義的,因為如果是int之類的元素,本身相當於鍵值,更改鍵值就破壞了原來紅黑樹的結構了。但是,有些情況下,我們自定義了一些資料結構,但是需要更改結構的非鍵值部分,此時不想拿出再插入。更特別的情況是元素的不可構造和不可移動的,此時就需要乙個更一般的方案。

乙個通用的解決方案是,把結構中可能需要更改的元素使用智慧型指標進行儲存,利用find函式找到結構的索引,再通過索引獲取指標進行操作。

**給出的是乙個最特殊的例子,不僅僅想直接更改,而且元素是不可複製和不可移動的。

#include

#include

#include

#include

#include

#include

#include

struct object

bool

operator

<

(const object& obj)

const

bool

operator==(

const object& obj)

const};

intmain()

std set的迭代器不能修改對應的元素

c 不長搞,每次搞都頻繁掉進陷阱裡。std setiset std set iterator it iset.insert 4 first it error.原因 std set的迭代器不能修改對應的元素.這是因為 std set的特點是 1.對於插入 刪除和查詢操作,set保證其時間複雜度都是o ...

獲取元素的直接的子元素childen

api的使用場景 我們獲取目標元素的直接子元素。關於zyc.dom.g請看這裡 注意 1 思路主要還是迴圈 從目標元素的firstchild開始,直到本身和nextsibling一樣的時候停止迴圈,返回乙個陣列 2 nodetype的判斷 元素1 children get the children ...

直接修改棧的例項

1 bobo catgotover.c 2 include stdio.h 3 include string.h 4 5 int evil code char s 6 10 11 int main int argc,char argv 12 23 24 bobo gccgotover.c ogoto...