我有一个程序,我有两个std::map迭代器说,left和right分别.我想找到范围内的元素数量[left,right].
我天真地做了这样的事:int len = right - left.我认为它会很好,但它给了我一个错误
然后我发现distance(left, right)方法感谢Stack Overflow上的帖子,但不幸的是它具有线性时间复杂度.
是否有可能为此获得O(1)解决方案?
我有一个集合,即类型multiset,我正在尝试使用upper_bound函数来查找迭代器返回的元素的索引.通常使用向量,如果我得到迭代器并从中减去vector.begin()以获得答案,它就可以工作.
但是,当我尝试使用它时,它会产生一个STL错误,在...中说"不匹配运算符 - "(省略STL详细信息)
是否有一个根本原因(设置实现为RB树和所有).如果是这样,有人可以建议替代吗?(我正在尝试解决编程网站上的问题)
谢谢!
无法理解以下代码:
int data[5] = { 1, 5, 2, 4, 3 };
vector<int> X(data, data+5);
int v1 = *max_element(X.begin(), X.end()); // Returns value of max element in vector
int i1 = min_element(X.begin(), X.end()) – X.begin(); // Returns index of min element in vector
Run Code Online (Sandbox Code Playgroud)
不确定如何减去X.begin返回的迭代器返回max/min元素的索引?