Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/142.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 应为std::set<;T>;::值\类型a常量?_C++_C++11_Std - Fatal编程技术网

C++ 应为std::set<;T>;::值\类型a常量?

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

我看到map
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
的整个概念,后者通常被实现为某种形式的二叉树。如果您有非常量迭代器,您将能够更改键,并且每次这样的更改都可能导致整个树的修改。