相关疑难解决方法(0)

减去地图迭代器

我有一个程序,我有两个std::map迭代器说,leftright分别.我想找到范围内的元素数量[left,right].

我天真地做了这样的事:int len = right - left.我认为它会很好,但它给了我一个错误

然后我发现distance(left, right)方法感谢Stack Overflow上的帖子,但不幸的是它具有线性时间复杂度.

是否有可能为此获得O(1)解决方案?

c++ algorithm dictionary

3
推荐指数
1
解决办法
1151
查看次数

C++集:不匹配 - 运算符

我有一个集合,即类型multiset,我正在尝试使用upper_bound函数来查找迭代器返回的元素的索引.通常使用向量,如果我得到迭代器并从中减去vector.begin()以获得答案,它就可以工作.
但是,当我尝试使用它时,它会产生一个STL错误,在...中说"不匹配运算符 - "(省略STL详细信息)

是否有一个根本原因(设置实现为RB树和所有).如果是这样,有人可以建议替代吗?(我正在尝试解决编程网站上的问题)

谢谢!

c++ stl set

2
推荐指数
1
解决办法
809
查看次数

减去X.begin()如何返回迭代器的索引?

无法理解以下代码:

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元素的索引?

c++ iterator stl

2
推荐指数
1
解决办法
793
查看次数

标签 统计

c++ ×3

stl ×2

algorithm ×1

dictionary ×1

iterator ×1

set ×1