作业帮 > 综合 > 作业

C++ 如何计算容器里两个元素间的距离

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/23 10:47:06
C++ 如何计算容器里两个元素间的距离
如果俩个元素都是唯一的,可以遍历整个vector,再找一个变量计数,然后下标想减就可以知道俩个元素的距离了.
再问: 两个元素不唯一呢 还有 请问下 这个vector下标怎么取,有调用函数?
再答: 不唯一就比较麻烦了,下标没有调用函数,之前是如果唯一可以计数,遇到第一个元素比如计到了5,第二个计到了7,直接一相减就是距离了。你有没有例子,什么样的数列,你要算哪俩个的距离。
再问: 就是vector里一个元素的下标 差不多就是这个样子
再答: //你要计算俩个元素的距离,就一定要求出俩个元素在vector中的下标。
//即使不唯一,你也得知道你要的是第几个数吧。
//比如 5,4,5,3,7,2,7数列, 你要求 第二个5和第二个7的距离(元素虽然不唯一,但你要求的哪个一定要知道,要不没法求)。
//你可以写
#include <iostream>
#include <vector>
using namespace std;

int main()
{
vector<int> vecint;
vecint.push_back(4);
vecint.push_back(5);
vecint.push_back(7);
vecint.push_back(5);
vecint.push_back(3);
vecint.push_back(7);
int icount  = 0;\x09//用来记录整个vector的下标
int icountone5 = 0;\x09//第1个5的位置(vector中的下标)
int icounttwo5 = 0; //第2个5的位置(vector中的下标)
int icountone7 = 0; //第1个7的位置(vector中的下标)
int icounttwo7 = 0; //第2个7的位置(vector中的下标)
for (int i = 0 ; i < vecint.size(); ++i)
{
if (vecint[i] == 5)
{
if (icountone5 == 1)
{
icounttwo5 = icount;
}
icountone5 = 1;
}

if (vecint[i] == 7)
{
if (icountone7 == 1)
{
icounttwo7 = icount;
}
icountone7 = 1;
}
icount ++;
}
int ilength = icounttwo7 - icounttwo5;
cout<<"距离长度为:"<<ilength<<endl;
return 0;
}