2016-06-08 33 views
-3

有我整理过的整数数组有没有可能得到所需范围内索引的总和?如何获得数组索引的总和

int pointX[LENGHT] = {0,531,710,1067,1537,1903,2121,2434,2738,3031,...}; 

说我想要得到指数4每边值= 1903作为整数。 所以......我期待有类似:

x0 = 6 
xN1 = 5 

(XN1 - 从数字看X-1的位置)

xN2 = 4 
xN3 = 3 
xN4 = 2 

(在阵列正数)

x1 = 7 
x2 = 8 

...等等。 以便总和我可以有:

sum = xN4 + xN3 + xN2 + xN1 + x + x1 + x2 + x3 + x4; 

UPDATE:

在上述阵列0具有索引0,531具有索引1和洙。现在如何获取int的索引?我想有说531的索引放入

int x; 

怎么办?

+3

我绝对不知道你在问什么。 –

+0

不清楚你想要做什么。你已经在“索引总和”之后失去了我,因为对于我来说,例如索引的总和。 2到5是2 + 3 + 4 + 5 – user463035818

+0

@ tobi303它们可能是为了总结'pointX [2] + pointX [3] + pointX [4] + pointX [5]'。但除此之外,我完全没有线索。 –

回答

2

要找到一个元素(例如531)在阵列中,您可以使用std::find的指标:

auto result1 = std::find(std::begin(pointX), std::end(pointX), 531); 

这将返回一个迭代器的531阵列中的第一次出现,你可以得到的指数(或者-1,如果通过

int index = (result1 == std::end(pointX)) ? -1 : std::begin(pointX) - result1; 

PS没有被发现的元素):这个答案在您的更新,但是,我仍然不真正了解这个问题的其余部分约(无意冒犯,如果你的英语不太好,只是不断尝试;)。

+0

由于容器似乎排序,我会建议'std :: lower_bound'。但只有在排序后才能使用。 – Gibet

+0

@Gibet'std :: find'和'std :: lower_bound'返回他们找到的第一个元素,所以我不明白这与被排序的数组有什么关系。同时'std :: lower_bound'正在搜索一个大于或等于OP的元素,而OP则要求相等。 – user463035818

+0

@Gibet好吧我知道了,'std :: lower_bound'被认为稍微有效一些(log2而不是线性复杂度)。然而我怀疑不会有太大的'长度'有显着差异,但当然值得尝试 – user463035818