将值插入到列表中的矢量中

Insert value into vector in a list

本文关键字:列表 插入      更新时间:2023-10-16

我有一个包含向量的特定列表。 我想向向量添加一个值。我该怎么做?

这是我的代码:

//creating the list with vectors
std::list< vector<string> > adjacencylist;
//adding some vectors to the list...
adjacencylist.push_back(std::vector<std::string>(1, "String"));
adjacencylist.push_back(std::vector<std::string>(1, "String"));
adjacencylist.push_back(std::vector<std::string>(1, "String"));

现在我想向列表中的向量添加值...我试过这个:

std::list< vector<string> >::const_iterator it = adjacencylist.begin();
(*it).push_back("Some more String");

我以为这会起作用。所以我可以遍历所有向量并插入我想要的值。但它不起作用。这里是编译器的输出:

example.cpp: In function ‘int main(int, char**)’:
example.cpp:148:31: error: passing ‘const std::vector<std::basic_string<char> >’ as ‘this’ argument of ‘void std::vector<_Tp, _Alloc>::push_back(const value_type&) [with _Tp = std::basic_string<char>; _Alloc = std::allocator<std::basic_string<char> >; std::vector<_Tp, _Alloc>::value_type = std::basic_string<char>]’ discards qualifiers [-fpermissive]
     (*it).push_back("test");

因为您已将it声明为const_iterator所以您无法编辑it引用的内容。当您调用push_back时,您正在尝试编辑it指向的vector。您需要替换:

std::list< vector<string> >::const_iterator it = adjacencylist.begin();
(*it).push_back("Some more String"); 

std::list< vector<string> >::iterator it = adjacencylist.begin();
(*it).push_back("Some more String");

在此处阅读一般constness,并在此处提供有关const_iterator的更多具体信息。

只需使用迭代器。您也可以使用 it -> push_back 而不是 (*it).push_back .

这是一个示例:

for (list< vector<string> > it = adjacencylist.begin(); it != adjacencylist.end(); ++it)
{
    it -> push_back("Your std::string");
}