在数组中存储struct(C ++)

时间:2016-10-23 21:31:34

标签: c++ arrays struct

我对C ++很新,而且我遇到了将结构存储在数组中的问题。我已经在这个板上搜索了这个,但似乎没有人有我的具体问题。

我正在创建一个基于文本的RPG游戏,需要一系列动态法术。法术是结构,定义如下: -

struct spell
{
    std::string mSpellName;
    int mRequiredMagicPoints;
};

然后我创建并初始化结构的两个实例: -

spell fireBall {"Fire Ball", 10};
spell magicMissile {"Magic Missile", 5};

然后,在main()中,我尝试将这两个实例存储在一个向量数组中: -

int main()
{
    std::vector<spell> mSpells[2];

    mSpells[0] = fireBall;
    mSpells[1] = magicMissile;
}

然而,Xcode对我大喊大叫并且没有可行的超负荷&#39; =&#39;&#34;

我还尝试将这些结构存储在传统的动态数组中,但它仍然无法编译。我做错了什么?

提前致谢!

2 个答案:

答案 0 :(得分:5)

std::vector<spell> mSpells[2];定义一组向量。看起来你只想要一个两个元素的向量。所以你开始但只是定义一个向量:

std::vector<spell> mSpells;

然后你有several options来添加元素:

mSpells.push_back(fireBall);
mSpells.emplace_back("Magic Missile", 5);

答案 1 :(得分:2)

您声明了vectorspell的两个vector的数组。你显然只想要一个vector<spell> mSpells(2); ,所以你要说以下内容:

mSpells

这也会将vector<spell> mSpells; mSpells.reserve(2); // optional, good idea mSpells.push_back(fireBall); mSpells.push_back(magicMissile); 初始化为两个默认构造的元素。

您可能还想写:

import numpy as np
import pandas as pd
from scipy import sparse

X1 = sparse.rand(10, 10000)
df = pd.DataFrame({ 'a': range(10)})

X2 = df['a'].reset_index()
X2 = X2.iloc[:,[1]].values

X = sparse.hstack((X1,X2))