想在整数数组的所有索引中添加一个整数

时间:2010-12-26 17:26:04

标签: c++ arrays

我想在数组的所有索引中添加一个整数。不使用循环.in single ststement。

int a [4] = {4,4,4,4}; 我想在所有索引中添加1 .. 所以输出是 COUT<

输出:_ 五 五 五 5

我相信所有人......

6 个答案:

答案 0 :(得分:8)

#include <functional>
#include <algorithm>

int main()
{
    int a[] = {1, 2, 3, 4};

    std::transform(a, a + sizeof(a) / sizeof(a[0]), a, std::bind1st(std::plus<int>(), 1));
}

答案 1 :(得分:2)

另一种可能性是使用std::valarray

int aa[] = {4, 4, 4, 4};

std::valarray<int> a(aa, 4);

a += 1;

我不能说我真的推荐这个,但确实有效。

答案 2 :(得分:1)

如何递归地执行:

template<typename Itr>
void inc(Itr itr, Itr end)
{
   if (itr == end) return;
   ++(*itr);
   inc(++itr,end);
}

int main()
{
   int a[4]={4,4,4,4}; 
   inc(a,a + 4);
   return 0;
}

这是尾递归的,所以一个不错的编译器应该把它转换成循环。

答案 3 :(得分:1)

SSE2解决方案(使用内在函数):

__m128i v1 = _mm_set_epi32(4, 4, 4, 4);
__m128i v2 = _mm_set_epi32(1, 1, 1, 1);
__m128i v3 = _mm_add_epi32(v1, v2);

答案 4 :(得分:1)

#include <iostream>
using namespace std;
int main()
{
int a[4]={4,4,4,4};
a[0]++,a[1]++,a[2]++,a[3]++;
return 0;
}

答案 5 :(得分:0)

如果您的数组只能有4个元素,则可以使用PADDD指令集扩展的SSE2指令。我从来没有用过这个,所以我无法提供更多细节。

This问题可能会为您提供更多有关如何操作的提示。