如何在c ++中创建数组(string [])的向量

时间:2015-05-01 18:38:01

标签: c++ arrays vector

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

有没有办法让我可以创建/推送ColName / Value到数组的向量

代码:

std::vector<std::string[3]> colNameAndValueList;//this doesnt work
string colName="ID";
string value="122001";
colNameAndValueList.push_back(std::string(colName,value));//im lost here

我不知道我是否应该使用哈希或结构,有人可以给我一个建议吗?

感谢。

5 个答案:

答案 0 :(得分:3)

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

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

typedef std::vector<Name_Value> Name_Value_Container;

这更易于阅读,理解和实施。

答案 1 :(得分:2)

有很多方法可以给这只猫上皮。当您在数组中插入值时,可以使用std::pairemplace_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
 */

这里是working example

答案 2 :(得分:2)

您可以使用std::pair类型的对象向量。例如

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

std::array类型的对象向量。例如

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;
}

程序输出

ID 122001
ID 122001 

答案 3 :(得分:0)

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

std::vector<std::pair<std::string, std::string>> 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);

答案 4 :(得分:0)

试试这个:

  vector<pair<string, string>> colNameAndValueList;
  string colName = "ID";
  string value = "122001";
  colNameAndValueList.push_back( { colName, value } );

如果您的记录中需要两个以上的字符串,那么您可以使用:

  vector<vector<string>> colNameAndValueList;