我想在数组的所有索引中添加一个整数。不使用循环.in single ststement。
int a [4] = {4,4,4,4}; 我想在所有索引中添加1 .. 所以输出是 COUT<
输出:_ 五 五 五 5
我相信所有人......
答案 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问题可能会为您提供更多有关如何操作的提示。