STL中的set---可以直接修改set中的元素么?
2015-01-04 23:59
260 查看
set就是互斥集合, 直接吃菜:
我们再来看看这样一个问题: set中的元素是否可以直接修改?
我们知道, set的迭代器有iterator和const_iterator, 但是, 对于set这个特殊的关联容器, 这两者都是一样的, 也就是说: set中的元素只可以读, 不可以写。 gcc是按照标准实现了的, 而微软的VC++6.0和VS2005的实现则有点瑕疵, 不过, 也不是什么大问题。
#pragma warning(disable: 4786) #include<set> #include <iostream> using namespace std; int main() { set<int> st; set<int>::iterator it; if (st.empty()) { cout << "empty" << endl; // 开始为空 } it = st.find(2); if (it != st.end()) { cout << "yes" << endl; } else { cout << "no" << endl; // 找不到2 } // 插入数据。 st.insert(3); st.insert(1); st.insert(4); st.insert(2); st.insert(2); // 重复, 不会插入 st.insert(2); // 重复, 不会插入 // 迭代器遍历 for (it = st.begin(); it != st.end(); it++) { cout << *it << endl; // 1 2 3 4, 说明set互异, 且是有序的set } it = st.find(2); if (it != st.end()) { cout << "yes" << endl; // 有了 } else { cout << "no" << endl; } int result = st.erase(2); cout << result << endl; // 1 st.clear(); return 0; }
我们再来看看这样一个问题: set中的元素是否可以直接修改?
#pragma warning(disable: 4786) #include<set> #include <iostream> using namespace std; int main() { set<int> st; set<int>::iterator it; // 插入数据。 st.insert(3); st.insert(1); st.insert(4); st.insert(2); st.insert(2); // 重复, 不会插入 st.insert(2); // 重复, 不会插入 it = st.begin(); *it = 100; // 居然可以啊, C++ primer说不可以修改啊。极有可能VC++6.0的实现有点瑕疵, 不过也不是啥大问题! return 0; }而且, 我验证了一下, 在VS2005中, 也是如此, 居然通过。 但是, 在gcc中, 上面的程序会报错。
我们知道, set的迭代器有iterator和const_iterator, 但是, 对于set这个特殊的关联容器, 这两者都是一样的, 也就是说: set中的元素只可以读, 不可以写。 gcc是按照标准实现了的, 而微软的VC++6.0和VS2005的实现则有点瑕疵, 不过, 也不是什么大问题。
相关文章推荐
- 修改 window.setTimeout,使之可以传递参数和对象参数
- 直接双击页面元素进行修改的HTML代码
- char s[] 和 const char s[]和char *s和const char *s 是否可以修改元素。
- UVa 156 Ananagrams (用STL multimap&set处理字典中的重复元素)
- STL集合容器set按照由小到大或者由大到小的顺序存放元素
- 关于set元素的不可直接更改
- 删除数组中重复元素 (使用stl::set)
- std::set的迭代器不能修改对应的元素
- 销售订单的一个直接修改源程序的地方 MV45AFZZ 可以控制销售订单上的价格显示不显示
- CCDictionary(封装了哈希表.可以加入两种元素:键为整型或字符串值为ccobject.CCDICT_FOREACH objectForKey allKeysForObject setObj)
- 直接双击页面元素进行修改的HTML代码
- 对stl的set中元素进行删除时需注意的地方
- vimtips.txt 可以直接使用,无需任何修改 (TipofTheDay vim)
- 细数C++ STL 的那些事---set(元素唯一,且排序)
- jxl.jar 的百度百科,根据这个还是可以搞出来的,不过就是修改那块写的不是很好,修改其实可以直接读取数据并操作。
- STL容器之间可以直接相互赋值使用
- 在脚本中可以直接使用id名称调用元素
- 直接双击页面元素进行修改的HTML代码
- stl 中 容器 set 类插入,删除,遍历,其中存储的元素为基础类型 int (1)
- set方法可以直接通过代码编写