for_each
如果您想要 chris 变换的另一种替代方法,您可以使用。与 chris 的示例不同,以下示例不使用 lambda 表达式 (C++11)。
#include <stdio.h>
#include <vector>
#include <algorithm>
typedef struct{
int radius;
char color;
} circle;
std::vector<int> *intvecPtr=NULL;
struct myclass {
void operator() (circle x)
{
if (intvecPtr != NULL)
intvecPtr->push_back(x.radius);
}
} myobject;
int main(void)
{
circle x;
std::vector<circle> circles;
for (int i=0; i<100; i++)
{
x.radius = 2*(i+1);
x.color = (i+1);
circles.push_back(x);
}
std::vector<int> sizes;
sizes.reserve(circles.size());
intvecPtr = &sizes;
std::for_each(circles.begin(), circles.end(), myobject);
for (int i = 0; i < sizes.size(); i++) {
printf("%d,",sizes[i]);
}
printf("\n");
}