将字符串集合中的元素添加到字符串集合的向量中
Add element from set of strings to vector of set of strings
我想为下面的练习做一个操作,在这里我试图将一组字符串中的元素添加到一组字符串的向量中。
#include <iostream>
#include <set>
#include <vector>
int main() {
std::set<std::string> remaining_cards = {"2S", "3S", "4S", "5S", "6S"};
std::vector<std::set<const std::string>> player_cards;
int random_number;
random_number=2;
auto it = remaining_cards.cbegin();
std::advance(it, random_number);
std::cout << *it << std::endl;
// add one element to a vector of sets of strings from set of strings
player_cards.emplace_back(*it);
// remove that element from the original set
remaining_cards.erase(it);
return 0;
}
我有以下问题:
- 为什么我会得到错误
::const_reference = const std::basic_string<char>&]' cannot be overloaded.
- 我试图从
player_cards
声明中删除const
,但后来得到了no matching function for call to 'std::set<std::basic_string<char> >::set(const std::basic_string<char>&)
- 当我执行
emplace_back(*it);
时,是否必须取消引用it
- 我怀疑我的问题是因为我试图将集合的一个元素放入字符串集合的向量中。我需要首先创建迭代器指向的元素的集合吗?我想它只指向一根绳子
- template_back是否不能直接创建集合
- 我能做一些类似
emplace_back(std::set(*it));
的事情吗
由于我是c++的新手,以上所有内容可能在概念上都是错误的,但我正在努力理解将元素从集合添加到集合向量的最佳方法。这似乎比预期的要复杂。
类模板std::set
中没有接受对类型为value_type的对象的引用的构造函数。但是有一个构造函数可以接受例如初始化器列表。你可以写
player_cards.emplace_back( std::set<std::string>( { *it } ) );
- 为什么我会得到错误
::const_reference = const std::basic_string<char>&]' cannot be overloaded.
因为您正试图使用一组常量。Const类型不满足std::set
的类型要求。请改用std::vector<std::set<std::string>>
。
- 我试图从player_cards声明中删除常量,但后来我得到了
no matching function for call to 'std::set<std::basic_string<char> >::set(const std::basic_string<char>&)
it
是一个指向std::string
的迭代器。如果您查看std::set
的构造函数,您会发现它没有将字符串作为参数的构造函数。
有一个构造函数采用std::initializer_list
。不幸的是,由于复杂的原因,它不能直接与emplace_back
一起工作。但它可以与辅助变量一起使用:
auto init = {*it};
player_cards.emplace_back(init);
- 当我执行
emplace_back(*it);
时,是否必须取消引用它
考虑到emplace_back(*it);
和emplace_back(it);
都不起作用,这个问题有点不清楚。您必须通过迭代器间接访问指向的元素。如果不需要访问指向的元素,那么就不需要通过迭代器进行间接访问。
- 。。。我需要首先创建迭代器指向的元素的集合吗
这就是emplace_back
的作用。
相关文章:
- 显示字符串的集合和子集
- 如何在集合中的特定字符串中查找子字符串
- 在 c++ 中将集合转换为向量和向量转换为字符串时出现运行时异常
- 将字符串集合中的元素添加到字符串集合的向量中
- 将字符串保存在集合中时,C_STR()仍然有效
- 如何使用for_each,transform,Iterator和lambda的某种组合将STD ::集合的字符串转换为小
- 集合中元素的子字符串
- variadic宏可从未知参数集合中生成字符串向量
- 使用shared_ptr<字符串>转换为一个无序集合<字符串>
- 限制集合中的字符串长度
- 在c++中的graphics.h上打印包含字符串的集合
- remove_if字符串匹配集合中的给定字符串
- 创建字符串 c++ 的常量集集合
- 为什么这段代码找不到我集合中最长字符串的长度?
- 访问集合c++中字符串的第一个字母
- 具有前缀和后缀查询的字符串集合的数据结构
- 如何在<string>没有 std::string 中介的情况下制作一个支持通过 C 字符串查找的集合?
- 生成与集合中的字符串不匹配的字符串
- 具有字符串成员的结构的集合与向量
- 如何搜索字符串是否是存储在集合中的字符串的前缀