unordered_map <(int 或 string),MyClass> 如何访问和打印 MyClass 的元素
unordered_map <(int or string), MyClass> How to access and print elements of MyClass
这是我的代码。
#include <iostream>
#include <string>
#include <unordered_map>
using namespace std;
class Token {
string strVar;
int intVar;
bool boolVar;
public:
Token(string strVar, int intVar ,bool boolVar):
strVar(strVar), intVar(intVar) ,boolVar(boolVar){
}
string getStrVar() {return this->strVar;}
int getIntVar() {return this->intVar;}
bool getBoolVar() {return this->boolVar;}
};
int main(){
unordered_map<int , int> mymap;
//I WANT -> unordered_map<int , Token> mymap;
mymap[1]= 11;
//I WANT -> // mymap[1] = Token("string1", 1, true);
mymap[2]= 12;
//I WANT -> // mymap[2] = Token("string2", 2, false);
mymap[3]= 13;
//I WANT -> //mymap[3] = Token("string3", 3, true);
int tk = mymap[1];
//I WANT -> //Token tk = mymap[1];
mymap[3] = tk;
for (auto& x: mymap) {
cout << x.first << ": " << x.second << endl;
//I WANT -> print all Var from MyClass,
//for example, x.second.getStrVar() << x.second.getIntVar() << x.second.getBoolVar() << endl;
}
return 0;
}
出输出:
3: 11
2: 12
1: 11
正如我在评论中解释的那样,我如何在我的课程中使用unordered_map&lt;>函数,并通过您的元素进行循环,以便我可以使用类的方法?
我需要此输出:
string1 1 true
string2 2 true
string1 1 true
映射类型参数必须是默认构造的。这意味着,您需要为您的类令牌声明默认构造函数。
编辑好吧,不是准确的地图类型参数,而是在cppreference.com上指定的地图的运算符[]参数。
此外,要在循环中打印出它,您需要为您的班级定义输出操作员(操作员&lt;&lt;)。您的工作代码:
#include <iostream>
#include <string>
#include <unordered_map>
using namespace std;
class Token {
string strVar{};
int intVar{};
bool boolVar{};
public:
Token() {};
Token(string strVar, int intVar ,bool boolVar):
strVar(strVar), intVar(intVar) ,boolVar(boolVar){
}
string getStrVar() {return this->strVar;}
int getIntVar() {return this->intVar;}
bool getBoolVar() {return this->boolVar;}
friend std::ostream& operator<< (std::ostream& out, const Token& rhs) {
out << rhs.strVar;
}
};
int main(){
//unordered_map<int , int> mymap;
//I WANT -> //
unordered_map<int , Token> mymap;
//mymap[1]= 11;
//I WANT -> //
mymap[1] = Token("string1", 1, true);
//mymap[2]= 12;
//I WANT -> //
mymap[2] = Token("string2", 2, false);
//mymap[3]= 13;
//I WANT -> //
mymap[3] = Token("string3", 3, true);
//int tk = mymap[1];
//I WANT -> //
Token tk = mymap[1];
mymap[3] = tk;
for (auto& x: mymap) {
cout << x.first << ": " << x.second << endl;
//I WANT -> print all Var from MyClass,
//for example, x.second.getStrVar() << x.second.getIntVar() << x.second.getBoolVar() << endl;
}
return 0;
}
相关文章:
- 通过方法访问结构
- 使用不带参数的函数访问结构元素
- 如果我只是不访问queue_front节点的子节点,而是将它们推到队列中呢?还是BFS吗
- 用于访问容器<T>数据成员的正确 API
- 访问者访问变体并返回不同类型时出错
- 尝试通过多个向量访问变量时,向量下标超出范围
- 无法访问嵌套类.类的使用无效
- 写入位置0x0000000C时发生访问冲突
- 我们可以访问一个不存在的联盟的成员吗
- C++从另一个类访问公共静态向量的正确方法是什么
- 我的简单if-else语句是如何无法访问的代码
- 从C++dll访问C#中的一行主要参数
- 概念TS检查忽略私有访问修饰符
- 访问被拒绝后,c++中的故障保护代码
- 在c++中访问int到类对象的映射时出错
- 我想访问std::unique_ptr中的一个特定元素
- 为什么示例代码访问IUnknown中已删除的内存
- C++:无法访问声明的受保护成员
- unordered_map <(int 或 string),MyClass> 如何访问和打印 MyClass 的元素
- 向量的<myClass>访问迭代器