c++ - 如何将初始化的结构放入结构中?

标签 c++ c data-structures vector initialization

我有一个结构:

typedef struct 
{      
    int nNum;     
    string str;    
}KeyPair;

然后我将我的结构初始化成这样:

KeyPair keys[] =  
{    
    {0, "tester"},        
    {2, "yadah"},        
    {0, "tester"}  
};   

然而,让我们说一些其他的初始化:

KeyPair keysA[] =  
{    
    {0, "tester"},        
    {2, "yadah"},        
    {0, "tester"}  
};   



KeyPair keysB[] =  
{    
    {0, "testeras"},        
    {2, "yadahsdf"},        
    {3, "testerasss"}  
};   



KeyPair OtherkeysA[] =  
{    
    {1, "tester"},        
    {2, "yadah"},        
    {3, "tester"}  
};

并喜欢另外 20 个。

现在,如何创建另一个结构并对其进行初始化,使其包含这些已初始化的 key 对?

这样做的原因是因为我将重复调用一个函数,其参数将用于这些结构。我不想这样做:

pressKeyPairs( keys, sizeof( keys) / sizeof( keys[0] ) );
pressKeyPairs( keysA, sizeof( keysA) / sizeof( keysA[0] ) );
pressKeyPairs( keysB, sizeof( keysB) / sizeof( keysB[0] ) );
pressKeyPairs( OtherkeysA, sizeof( OtherkeysA) / sizeof( OtherkeysA[0] ) );
and so on...

所以我只想遍历一个包含这些 KeyPairs 的初始化实例化的结构...

或者我想将这些已初始化的 KeyPairs 实例放入一个 vector 中,然后循环遍历该 vector ...我该怎么做?

最佳答案

假设您有固定数量的 key 对,您可以使用结构成员函数:

typedef struct KeyPairs {
    KeyPair keysA[3];
    KeyPair keysB[3];
    KeyPair otherKeysA[3];

    void init() {
       keysA[0].nNum = 0;
       keysA[0].str = "tester";
       keysA[1].nNum = 2;
       keysA[1].str = "yadah";
       keysA[2].nNum = 0;
       keysA[2].str = "tester";

       // and so on for other keys
    }
} KeyPairs;

然后像这样使用它:

KeyPairs pairs;
pairs.init();

关于c++ - 如何将初始化的结构放入结构中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4918447/

相关文章:

android - 无法在android中启动cocos2dx ios项目

c++ - 如何正确使用new运算符(C++)

c - 使用指针未声明的 Sprite 错误

c++ - 以下 C++ 代码中的冒号是什么意思

c++ - 在CLion中测试Shell(.sh)文件

c++ - 在windows平台下,比如xp,win7,有没有redis的好用的C++客户端?

c - 拼写检查器如何工作?

c - 从不同的 UART 驱动读取数据

c - 销毁双线程二叉树

Python defaultdict 深层嵌套数据结构