같은 더 STL/다음보다 효율적인 STL,
for (int i=0 ; i< N ; ++i)
{
mystruct[i].key = myfunction(xp[i], yp[i], zp[i]);
mystruct[i].index = i;
}
MYSTRUCT 유형이다
struct KeyIndex
{
int key;
int index;
};
XP, YP, ZP을하는 효율적인 방법이 크기가 3 개의 부동 소수점 배열이다. N
double xp[N];
double yp[N];
double zp[N];
이고 myfunction은 서명이있는 일부 함수이다. int myfunction (int, int ,int)
myfunction
기능을 STL 용 functor로 변경해야하는 경우 좋습니다.
struct TheFunctor
{
double *xp, *yp, *zp;
int idx;
TheFunctor(double * Xp, double * Yp, double * Zp) : xp(Xp), yp(Yp), zp(Zp), idx(0) {};
KeyIndex operator()()
{
KeyIndex ret;
ret.key=idx++;
ret.value=myfunction(*(xp++), *(yp++), *(zp++));
}
};
TheFunctor fn(xp, yp, zp);
std::generate(begin(mystruct), end(mystruct), fn);
를하지만 확실하지 빠르게이며, 그것은 방법이 더 애매한 더 좋은 이유입니다 :
이것은 기능적 스타일의 솔루션을 찾는 것이 쓸모없는 합병증인데 코드가 실제 이유없이 더 모호한 경우 중 하나라고 생각합니다. –
@MatteoItalia : 이것은 Functor를 사용하는 데 익숙해 지도록하는 간단한 연습이라고 가정합니다. –
회원 이름을 기반으로지도와 같은 구조를 구축하려는 것 같습니다. 다음과 같은 것을 고려할 수 있습니다 :'std :: map mymap; –