【发布时间】:2019-05-30 12:02:48
【问题描述】:
我有这个整数向量:
std::vector<int> v = {1, 1, 2, 2, 2, 3};
我想找到相邻元素不相等的索引:
1
4
5
我的解决方案是(不起作用):
std::vector<int> v = {1, 1, 2, 2, 2, 3};
auto i1 = std::begin(v);
while(1)
{
i1 = std::adjacent_find(i1, std::end(v), std::not_equal_to<int>());
std::cout << std::distance(std::begin(v), i1) << '\n';
if (i1++ == std::end(v))
break;
}
打印出来:
1
4
6
最后一个元素指向索引 6,但我希望它指向 5(值 3)。任何帮助表示赞赏!
【问题讨论】:
-
你能用文字准确地描述“索引,相邻元素不相等的地方”对你意味着什么吗?
-
@JohnZwinck 值
1, 2不相等,因此最后一个值的索引1(即 1)。然后2, 3不相等,所以最后一个值的索引2(即4)。然后我们剩下最后一个值 3,所以也输出这个索引(即 5)。但是,是的,正如@marek-r 所说,问题的表述可能不正确..
标签: c++ algorithm vector iterator