想要在c++中向字符串向量的向量中添加额外的字符串

Want to add additional strings to a vector of string vectors in c++

本文关键字:向量 字符串 添加 c++      更新时间:2023-10-16

我有十几个字符串向量,我想把它们都放在一个较大的向量中,然后迭代,为每个较小的向量添加一个字符串。

假设向量1有"1"作为元素
向量2有"1"answers"2"作为元素
向量3有"1"、"2"answers"3"作为元素

向量12有"1","2"。。。和"12"作为元素

矢量"大"中有1-12个矢量(或指向每个矢量的指针,最简单的)

我想遍历向量大的每个元素,并将"a"answers"b"加到向量1-12上。

这可能吗,或者追加到向量1会覆盖向量2的部分吗?

如果大向量是指向字符串向量的指针向量,那也没关系。

编辑(部分代码,而不是全部):

vector<vector<string>* > allTypesOfGamesDealt;
vector<string> FB_BJ_BS;
vector<string> BJ_BS;
FB_BJ_BS.push_back("Free Bet");
FB_BJ_BS.push_back("Blackjack");
FB_BJ_BS.push_back("Big Six");
allTypesOfGamesDealt.push_back(& FB_BJ_BS);
BJ_BS.push_back("Blackjack");
BJ_BS.push_back("Big Six");
allTypesOfGamesDealt.push_back(& BJ_BS);
for(int i = 0; i < allTypesOfGamesDealt.size(); ++i)
{
    vector<string> * tempGamesDealt = allTypesOfGamesDealt[i];
        (*tempGamesDealt).push_back("Break");
}

^这个代码的问题是,我想我在向量的副本中添加了"Break",而不是实际的向量。

如果你所说的"vector"是指std::vector,那么不,你不会有任何问题。

问题的答案是否定的,C++strings管理自己的内存,不会覆盖已经分配给另一个变量的任何内容。我相信他们实际上在默认情况下分配了一定数量的内存,如果需要更多的内存,就会增加内存,而不是像最初需要的那样分配,因为重新分配内存相对昂贵,所以分配的内存比需要的多一点而不使用一些更可取。假设我理解你的意思,

std::vector<std::string> a;
a.push_back("Hell");
a.push_back("World");
a[0].append("o");

不会有任何问题。

编辑:

即使有了嵌套,它仍然会很好,原因有两个。首先,vector通常分配的内存比string所需的内存多,原因相同。即使您要达到容量并想添加另一个元素,它也会使用托管函数来重新分配内存,这将确保您不会覆盖其他任何内容。

您可以执行以下操作:

std::vector<std::vector<std::string>*> vectors = {&v1, &v2, &v3, &v4, &v5, &v6, &v7, &v8, &v9, &v10, &v11, &v12};
for (auto* v : vectors) {
    v->push_back("a");
    v->push_back("b");
}

实例