C++ 如何在c++;

C++ 如何在c++;,c++,arrays,vector,C++,Arrays,Vector,我有两个字符串,来自Sqlite3、ColName和Value。我想保存每对值,我不知道ColName/Value的数量,所以我使用vector 是否有一种方法可以创建/将ColName/值推送到数组的向量 代码: std::vector colname和valuelist//这不管用 字符串colName=“ID”; 字符串值=“122001”; colName和valuelist.push_back(std::string(colName,value))//我在这里迷路了 我不知道我应该使

我有两个字符串,来自Sqlite3、ColName和Value。我想保存每对值,我不知道ColName/Value的数量,所以我使用vector

是否有一种方法可以创建/将ColName/值推送到数组的向量

代码:

std::vector colname和valuelist//这不管用
字符串colName=“ID”;
字符串值=“122001”;
colName和valuelist.push_back(std::string(colName,value))//我在这里迷路了
我不知道我应该使用hash还是struct,有人能给我一个建议吗


谢谢。

我建议您使用结构如下的
std::vector

struct Name_Value
{
  std::string name;
  std::string value;
};

typedef std::vector<Name_Value> Name_Value_Container;
struct Name\u值
{
std::字符串名;
std::字符串值;
};
typedef std::向量名称\值\容器;

这更易于阅读、理解和实现

我建议您使用结构的
std::vector

struct Name_Value
{
  std::string name;
  std::string value;
};

typedef std::vector<Name_Value> Name_Value_Container;
struct Name\u值
{
std::字符串名;
std::字符串值;
};
typedef std::向量名称\值\容器;

这更易于阅读、理解和实现

有很多方法可以剥这只猫的皮。在将值插入数组时,可以使用
std::pair
emplace\u back
在适当的位置构造
pair

std::vector<std::pair<std::string, std::string>> records;

std::string column = "hello";
std::string value = "world";

records.emplace_back(column, value); // Use existing strings
records.emplace_back("new", "value"); // Use c-string literals

for (auto& record : records) {
    std::cout << record.first << ": " << record.second << std::endl;
}

/*
 * Prints:
 * hello: world
 * new: value
 */
std::向量记录;
std::string column=“hello”;
std::string value=“world”;
记录。放回(列,值);//使用现有字符串
记录。放置回(“新”、“值”);//使用c字符串文字
用于(自动记录:记录(&R){

std::cout有很多方法可以剥这只猫的皮。在数组中插入值时,可以使用
std::pair
emplace\u back
在适当的位置构建
pair

std::vector<std::pair<std::string, std::string>> records;

std::string column = "hello";
std::string value = "world";

records.emplace_back(column, value); // Use existing strings
records.emplace_back("new", "value"); // Use c-string literals

for (auto& record : records) {
    std::cout << record.first << ": " << record.second << std::endl;
}

/*
 * Prints:
 * hello: world
 * new: value
 */
std::向量记录;
std::string column=“hello”;
std::string value=“world”;
records.emplace_back(列,值);//使用现有字符串
records.emplace_back(“new”,“value”);//使用c字符串文本
用于(自动记录:记录(&R){

std::cout您可以使用类型为
std::pair
的对象向量

std::vector<std::pair<std::string, std::string>> colNameAndValueList;
std::vector<std::array<std::string, 2>> colNameAndValueList;
普通数组没有复制赋值运算符,所以最好不要在标准容器中使用它们

这是一个演示程序

#include <iostream>
#include <vector>
#include <array>


int main()
{
{
    std::vector<std::pair<std::string, std::string>> colNameAndValueList;

    colNameAndValueList.push_back( { "ID", "122001" } );

    for ( const auto &p : colNameAndValueList )
    {
        std::cout << p.first << ' ' << p.second << std::endl;
    }

}
{
    std::vector<std::array<std::string, 2>> colNameAndValueList;

    colNameAndValueList.push_back( { "ID", "122001" } );

    for ( const auto &a : colNameAndValueList )
    {
        for ( const auto &s : a ) std::cout << s << ' ';
        std::cout << std::endl;
    }

}

    return 0;
}

您可以使用类型为
std::pair
的对象向量

std::vector<std::pair<std::string, std::string>> colNameAndValueList;
std::vector<std::array<std::string, 2>> colNameAndValueList;
普通数组没有复制赋值运算符,所以最好不要在标准容器中使用它们

这是一个演示程序

#include <iostream>
#include <vector>
#include <array>


int main()
{
{
    std::vector<std::pair<std::string, std::string>> colNameAndValueList;

    colNameAndValueList.push_back( { "ID", "122001" } );

    for ( const auto &p : colNameAndValueList )
    {
        std::cout << p.first << ' ' << p.second << std::endl;
    }

}
{
    std::vector<std::array<std::string, 2>> colNameAndValueList;

    colNameAndValueList.push_back( { "ID", "122001" } );

    for ( const auto &a : colNameAndValueList )
    {
        for ( const auto &s : a ) std::cout << s << ' ';
        std::cout << std::endl;
    }

}

    return 0;
}

要回答@huu是对的,请使用

std::vector<std::pair<std::string, std::string>> myVector

    std::pair("ID", "122001") mypair;
    myVector.push_back(mypair);
std::vector myVector std::pair(“ID”,“122001”)mypair; myVector.push_back(mypair);
或用户定义的结构

// In your .h file
   struct myPair {
        std::string one;
        std::string two;
    };
// in your .c file
        myPair res;
        res.one = "ID";
        res.two = "122001";
        std::vector<myPair> myVector;
        myVector.push_back(res);
//在.h文件中
结构myPair{
std::字符串一;
std::字符串2;
};
//在.c文件中
myPair res;
res.one=“ID”;
res.two=“122001”;
std::vector myVector;
myVector.push_back(res);

要回答,@huu说得对,请使用

std::vector<std::pair<std::string, std::string>> myVector

    std::pair("ID", "122001") mypair;
    myVector.push_back(mypair);
std::vector myVector std::pair(“ID”,“122001”)mypair; myVector.push_back(mypair);
或用户定义的结构

// In your .h file
   struct myPair {
        std::string one;
        std::string two;
    };
// in your .c file
        myPair res;
        res.one = "ID";
        res.two = "122001";
        std::vector<myPair> myVector;
        myVector.push_back(res);
//在.h文件中
结构myPair{
std::字符串一;
std::字符串2;
};
//在.c文件中
myPair res;
res.one=“ID”;
res.two=“122001”;
std::vector myVector;
myVector.push_back(res);
试试这个:

  vector<pair<string, string>> colNameAndValueList;
  string colName = "ID";
  string value = "122001";
  colNameAndValueList.push_back( { colName, value } );
vector colname和valuelist;
字符串colName=“ID”;
字符串值=“122001”;
colName和valuelist.push_back({colName,value});
如果您的记录中需要两个以上的字符串,则可以使用:

  vector<vector<string>> colNameAndValueList;
vector colname和valuelist;
试试这个:

  vector<pair<string, string>> colNameAndValueList;
  string colName = "ID";
  string value = "122001";
  colNameAndValueList.push_back( { colName, value } );
vector colname和valuelist;
字符串colName=“ID”;
字符串值=“122001”;
colName和valuelist.push_back({colName,value});
如果您的记录中需要两个以上的字符串,则可以使用:

  vector<vector<string>> colNameAndValueList;
vector colname和valuelist;

你可以像在
std::vector
中那样使用
std::pair
非常感谢!那就可以了!D@huuYou可以像在
std::vector
中一样使用
std::pair
非常感谢!那就可以了!D@humany谢谢!auto&将与
std::vector::iterator it=records.begin();it!=records.end()一样;it++)
?实际上是一样的,因为两者都允许你遍历向量。在代码中,它不是,
auto&record
是实际的
std::pair>
对象,它存在于向量中。没错,从C++11开始,基于范围的for循环是可用的。我会用老式的方式来做,我正在开发一个移动POS APIat只允许C++98,Thank:DMany Thank!,auto&将执行与
std::vector::iterator it=records.begin();it!=records.end()相同的操作;it++)
?实际上是一样的,因为两者都允许你遍历向量。在代码中,它不是,
auto&record
是实际的
std::pair>
对象,它存在于向量中。没错,从C++11开始,基于范围的for循环是可用的。我会用老式的方式来做,我正在开发一个移动POS APIat只允许C++98,谢谢:D