这是我的代码。
UIScreen.main.isCaptured
Atual OUTPUT:
#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;
}
正如我在评论中所解释的,我如何使用unordered_map&lt;&gt;函数与我的类和循环遍历您的元素,以便我可以使用类???
的方法我需要这个输出:
3: 11
2: 12
1: 11
答案 0 :(得分:1)
Map type参数必须是default-constructible。这意味着,您需要为类Token声明默认构造函数。
EDIT 好吧,不完全是map类型参数,而是Map的operator []参数,因为它指定了here on 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;
}