我对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;
我还尝试将这些结构存储在传统的动态数组中,但它仍然无法编译。我做错了什么?
提前致谢!
答案 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)
您声明了vector
个spell
的两个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))