结构和数组(C++) 如何使用一个数组为名称分配卷号

Struct and arrays(C++) How to assign roll no to names using one array

本文关键字:数组 一个 分配 C++ 何使用 结构      更新时间:2023-10-16

我想为三个名称分配三个卷号,但只使用一个数组。请告诉我如何在 c++ 中做到这一点。我认为它是使用结构和数组完成的

你可以制作一个 std::p air 数组。在 c++ 中更喜欢 std::vector 而不是原始数组,也非常喜欢 std::string 而不是一个字符数组。

#include <iostream>
#include <utility> //std::pair
#include <string>
#include <vector>
using namespace std;
int main()
{
    //Raw array approach
    pair<string, int> nameNumbersArr[3];
    nameNumbersArr[0] = make_pair("Adam", 50);
    nameNumbersArr[1] = make_pair("John", 30);
    nameNumbersArr[2] = make_pair("David", 20);
    //Vector approach
    vector<pair<string, int>> nameNumbersVec;
    nameNumbersVec.push_back(make_pair("Adam", 50));
    nameNumbersVec.push_back(make_pair("John", 30));
    nameNumbersVec.push_back(make_pair("David", 20));
    return 0;
}

您可以使用 .first 或 .second 访问一对的不同部分

例:

cout << nameNumbersVec[2].first << ' ' << nameNumbersVec[2].second << endl;

将打印

David 20

听起来你正在尝试制作地图。 在C++中,std::map 是内置的,所以像这样的东西可能是你正在寻找的:

#include <map>
#include <string>
std::map<int, std::string> stdNames;
stdNames[10] = "Bob";
stdNames[23] = "John";
stdNames[50] = "Mary";

现在,如果您无权访问内置,则可以自己实现映射结构。 std::map通常实现为红黑树,尽管您可以使用 avl 树或任何其他类型的自平衡二叉树来实现相同的目的。

现在听起来你学位还很早,所以你可能不习惯自己实施这些。 在这种情况下,您可能希望创建一个 Record 结构,并拥有一个这样的结构数组。

例如(类型/结构)

#define MAX_LEN 100
typedef struct {int rollNumber; 
                char name[MAX_LEN];} Record;
Record studentRecords[3];

请注意,在这种方法中实际上是 C 而不是C++,并且需要注意名称长度。 朱利安的回答向你展示了这种结果的C++方法。

听起来确实需要从这里阅读几本书: 权威C++书指南和清单

相关文章: