gpt4 book ai didi

c++ - 结构 vector

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:53:45 24 4
gpt4 key购买 nike

我有一些代码是另一个人给我的,我们在其中有一个结构

struct Pair {
string s1;
string s2;
bool equivalent;
};

然后他建立了一个硬编码的这些结构的 vector

std::vector<Pair> PairID;

staticdata() {
PairID={{"string","string2",true},
{"string","string3",true},
{"string","string4",false},
{"string","string7",false},
{"string3","string8",false}
};
}

不幸的是,我的编译器在 PairID={{"string","string2",true},

这是为什么?他建议使用 -std=c++0x 进行编译,但我的编译器 (gcc 4.2) 不支持这一点。有没有一种简单的方法可以转换代码以使其正常工作?为什么会失败??

我正在使用 Mac OSX,不想更新我的编译器

最佳答案

您的代码不是合法的 C++。它 是合法的 C++0x,但对语言进行了许多更改。因此,如果您想将此代码编译为 C++ 代码,则需要对其进行更改。

PigBen 的解决方案是一种方式,它的问题是临时数据可能会被多次构造和销毁,或者长期存在。

另一种方式:

    struct Pair {
string s1;
string s2;
bool equivalent;
};

Pair make_Pair(const string& s1, const string& s2, bool equivalent)
{
Pair ret;
ret.s1 = s1;
ret.s2 = s2;
ret.equivalent = equivalent;
return ret;
}

// somewhere in the init code...
std::vector<Pair> PairID;


PairID.push_back(make_Pair("string","string2",true));
PairID.push_back(make_Pair("string","string3",true));
PairID.push_back(make_Pair("string","string4",false));
PairID.push_back(make_Pair("string","string7",false));
PairID.push_back(make_Pair("string3","string8",false));

关于c++ - 结构 vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4155845/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com