C++ 应为std::set<;T>;::值\类型a常量?
我看到map在C++ 应为std::set<;T>;::值\类型a常量?,c++,c++11,std,C++,C++11,Std,我看到map在value\u type上有一个const键,但是set的工作方式不同 如果std::map::value_type是std::pair会std::set::value_type是const Key?否,它只是Key。但是std::set的所有迭代器都是常量迭代器,所以仍然无法修改元素(一般情况下)。@songyuanyao:但是如果将来添加一些不带常量迭代器的新方法呢?正如开-关原则所说:“为扩展而开-为修改而关”。@88877:我知道它是如何工作的。我的问题是应该是@Isaac
value\u type
上有一个const键,但是set的工作方式不同
如果
std::map::value_type
是std::pair
会std::set::value_type
是const Key
?否,它只是Key
。但是std::set
的所有迭代器都是常量迭代器,所以仍然无法修改元素(一般情况下)。@songyuanyao:但是如果将来添加一些不带常量迭代器的新方法呢?正如开-关原则所说:“为扩展而开-为修改而关”。@88877:我知道它是如何工作的。我的问题是应该是@IsaacPascual非常量迭代器将打破std::set
的整个概念,后者通常被实现为某种形式的二叉树。如果您有非常量迭代器,您将能够更改键,并且每次这样的更改都可能导致整个树的修改。