使用地图,我可以理解它被实现为二叉搜索树(例如红/黑树)及其时间复杂度。
但是对于多重映射,内部如何处理关键冲突?是否为所有具有相同键的节点维护了一个列表?或者进行一些其他处理。我遇到了一种情况,我可以使用 amap<int,vector<strings>>或 amultimap<int,string>并想知道权衡。
我有一个要求,我必须根据一些属性值更新图形前端的颜色.属性值有不同的范围....比如-30到-45,-60到-80等等....那么,我需要一个数据结构,我可以存储这些范围(预填充它们)....当我确定这一点时,我想知道这一点落在O(1)时间或O的范围内(logN)时间....所以,我的查询将由一个点组成,输出应该是包含该点的唯一范围...
我在范围树和段树之间感到困惑....我想在c ++ stl map之上构建树.
我正在阅读Scott Meyers的Effective C++并且遇到了这个问题.使用引用/指针的原因包含:
string s1("Nancy");
string s2("Clancy");
string& rs = s1; // rs refers to s1
rs = s2; //rs still refers to s1, but s1's value is now "Clancy".
Run Code Online (Sandbox Code Playgroud)
所以,我尝试了这个:
string s1("Nancy");
string s2("Clancy");
string& rs = s1;
cout << rs << endl;
rs = s2;
cout << rs << endl;
cout << s1 << endl;
Run Code Online (Sandbox Code Playgroud)
输出见:
nancy
clancy
clancy
Run Code Online (Sandbox Code Playgroud)
这意味着s1的值现在已经改变了,s1的原始值永远丢失了?
这是区分引用和指针的事情之一然后??只有当你确定不打算在不同的时间引用不同的对象时才使用引用.