使整型向量从具有整型类型的类的向量中接收值
Make an int vector receive the values from a vector of a class that has an int
那么,假设我有这个:
...
struct circle {
int radius;
char color;
}
vector<circle> circles;
...
vector<int> sizes;
for (int i = 0; i < circles.size(); i++) {
sizes[i] = circles[i].radius;
}
...
是否有一种方法,使"尺寸"自动接收所有的"半径"没有"for"例程?
使用std::transform
:
std::transform(
std::begin(circles), std::end(circles), std::back_inserter(sizes),
[](const circle &c) {return c.radius;}
);
没有办法拥有向量内容的"切片"。
有一些算法可以创建结果,因此for循环不是公开的,但它仍然在幕后发生。
你可以使用for_each
,如果你想要另一个替代克里斯的转换。下面的示例不像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");
}
相关文章:
- C 字符串返回字符串的整数/双精度/长整型值
- 是什么导致了这种使用三进制而不是短整型的有符号int到无符号int转换
- 无法在 Arduino 中uint8_t数组转换为无符号长整型数组
- JNI 日期值转换问题,在C++中获取不同的长整型值
- 将长整型值打印为带有前导零的十六进制
- 为什么在传递长整型时调用具有两个双精度类型的参数的重载函数?
- 将整型常量映射到类型
- 将元组和整型实例合并到引用元组中
- 提升不良词法强制转换:将字符串转换为无符号长整型时,无法将源类型值解释为目标
- 为什么C++不允许两个同名的函数/类模板,区别仅在于非类型模板参数(整型)的类型?
- 使用累加对包含长整型的向量求和
- 如何使用 avx 指令将浮点数向量转换为短整型?
- 将字符串存储在无符号长整型的向量中
- 使整型向量从具有整型类型的类的向量中接收值
- 如何正确输入整型,整型的向量,整型和字符串的向量
- 带有重载操作符的整型向量的实现无法正常运行
- 对整型向量从高到低排序
- 在c++中查找重复项向量中的单个整型
- 64位向量的点积速度比32位无符号整型向量快两倍
- 堆上的整型向量正在释放内存