正在使用大括号括起来的初始值设定项列表初始化结构向量
Initializing struct vector with brace-enclosed initializer list
我初始化正常类型向量,如下所示:
vector<float> data = {0.0f, 0.0f};
但当我使用结构而不是普通类型的时
struct Vertex
{
float position[3];
float color[4];
};
vector<Vertex> data = {{0.0f, 0.0f, 0.0f}, {0.0f, 0.0f, 0.0f, 0.0f}};
我得到错误could not convert '{{0.0f, 0.0f, 0.0f}, {0.0f, 0.0f, 0.0f, 0.0f}}' from '<brace-enclosed initializer list>' to 'std::vector<Vertex>'
。这个怎么了?
缺少一组{}
:
std::vector<Vertex> data =
{ // for the vector
{ // for a Vertex
{0.0f, 0.0f, 0.0f}, // for array 'position'
{0.0f, 0.0f, 0.0f, 0.0f} // for array 'color'
},
{
{0.0f, 0.0f, 0.0f},
{0.0f, 0.0f, 0.0f, 0.0f}
}
};
您实际上还需要一个{}
vector<Vertex> data = {{{0.0f, 0.0f, 0.0f}, {0.0f, 0.0f, 0.0f, 0.0f}}};
一个"{"表示向量,一个表示结构,一个(对)表示结构成员数组…
还可以初始化具有向量成员的对象。
#include <iostream>
#include <string>
#include <vector>
using namespace std;
class Test
{
public:
struct NumStr
{
int num;
string str;
};
Test(vector<int> v1,vector<NumStr> v2) : _v1(v1),_v2(v2) {}
vector<int> _v1;
vector<NumStr> _v2;
};
int main()
{
Test t={ {1,2,3}, {{1,"one"}, {2,"two"}, {3,"three"}} };
cout << t._v1[1] << " " << t._v2[1].num << " " << t._v2[1].str << endl;
return 0;
}
2 2两个
相关文章:
- 访问列表向量中的结构
- 从列表向量中删除无法按预期工作
- 从列表/向量制作嵌套 for 循环的最佳方法是什么?
- 在 c++ 中访问列表向量时出现问题
- 指向列表向量中的第n个元素
- 当迭代器添加到添加到列表向量的结构时,迭代器停止指向值?
- 如何将 for 循环中的每个迭代都放入列表/向量中?(C++)
- 删除列表向量中的元素并显示当前列表
- 如何与可以在列表/向量中使用的成员进行类型的类型
- 通过列表向量循环
- 如何使用C 创建多列列表/向量
- 存储动态创建对象的列表/向量的最佳方法是什么
- 基本STL:向量列表或列表向量,在这种特殊情况下哪个会更好
- Seg 错误初始化列表向量与控制台输入
- C++ 将文件读入数组/列表/向量
- 初始值设定项列表向量构造函数
- 如何在C++中初始化列表向量
- C++:保持实体列表向量与集合的最佳方式
- 如何将节点添加到列表向量
- 初始化列表向量时出错