C++ 在C+中对结构中的类别进行排序+;

C++ 在C+中对结构中的类别进行排序+;,c++,arrays,structure,C++,Arrays,Structure,我已经生成了包含更多参数的结构,其中一个称为“category”。有4个独特的类别,然后,他们是重复的。我想做的是将这4个独特的类别保存到字符串数组中,当我尝试将所有类别保存到一个包含大量重复项的数组中时 void getCategories(financeStruct *financeData, unsigned int dataCount) { string categ[dataCount]; unsigned int i; bool doIt = true;

我已经生成了包含更多参数的结构,其中一个称为“category”。有4个独特的类别,然后,他们是重复的。我想做的是将这4个独特的类别保存到字符串数组中,当我尝试将所有类别保存到一个包含大量重复项的数组中时

void getCategories(financeStruct *financeData, unsigned int dataCount)
{
    string categ[dataCount];
    unsigned int i;
    bool doIt = true;
    for (unsigned int i = 0; i < dataCount; i++){
        for (unsigned int j = 0; j < dataCount; j++){
            if (categ[j] == financeData[j].name)
                continue;
            else
                categ[i] = financeData[i].name;
    }
void getCategories(financeStruct*financeData,无符号整数数据计数)
{
字符串类别[数据计数];
无符号整数i;
bool doIt=true;
for(无符号整数i=0;i
我希望在数组中只包含这些原始类别,这样当它发现重复时就不会写入数组。

string categ[4];
string categ[4];
for (unsigned int j = 0; j < dataCount; j++)
    for (unsigned int i = 0; i < 4; i++)
        if (categ[i] == financeData[j].name)
            break;  // Have it already
        else if ( categ[i] == "" ) {
            categ[i] = financeData[j].name;  // Checked all earlier ones without finding it
            break; }
for(无符号整数j=0;j

这将存储遇到的前N个类别,只要
N必须使用正确的数据类型,
std::set
在这种情况下,您只需要获得唯一的类别?您需要计算每个类别的出现次数吗?只需将唯一的类别保存到数组中,不存在重复项。您是指第一个if st中的i而不是j吗atement?如果是这样的话,它只保存第一个类别,而不是我想要的所有类别。我在你发表评论前十分钟进行了编辑。你是在编辑之前还是之后询问的?在编辑之前,我做了一个不太可信的(经过一些思考)猜猜你想做什么)。如果你的意思是在编辑之后,我想你误解了代码。如果你误解了代码,你需要知道
break
打破内环,继续外环,这就是为什么外环必须跨越
financeData
。你的原始计划与
categ[]
更难正确。不,我在您编辑之前发表了评论,我尝试了新代码,效果很好。非常感谢您。