所以我试图从标准输入(使用cin)读取这样的输入:
亚当英语85
查理数学76
埃里卡历史82
理查德科学90
我的目标是最终将每个数据块存储在我自己创建的数据结构中,因此基本上我想解析输入,因此每个数据都是单独的.由于每行输入由用户一次输入一次,因此每次我得到需要解析的整行输入.目前我正在尝试这样的事情:
stringstream ss;
getline(cin, ss);
string name;
string course;
string grade;
ss >> name >> course >> grade;
Run Code Online (Sandbox Code Playgroud)
我遇到的错误是XCode告诉我没有匹配的函数调用getline令我感到困惑.我已经包含了string库,所以我猜这个错误与使用getline读取cin到一个stringstream?任何帮助在这里将不胜感激.
所以我可以说我声明了一个像这样的unordered_map:
unordered_map<string, vector<string>> my_map;
Run Code Online (Sandbox Code Playgroud)
我有一个我想要存储在其中的值列表,如下所示:
vector<string> vec1 = {"banana", "apple"};
vector<string> vec2 = {"banana", "banana"};
vector<string> vec3 = {"banana", "watermelon"};
Run Code Online (Sandbox Code Playgroud)
如果我通过并将每个向量初始化到地图,使用其第0个索引中的字符串作为键,如下所示:
my_map[vec1[0]] = vec1;
my_map[vec2[0]] = vec2;
my_map[vec3[0]] = vec3;
Run Code Online (Sandbox Code Playgroud)
unordered_map是否会存储所有三个向量,尽管它们具有相同的访问密钥?如果我想访问每个向量,有没有一种方法可以按照上面列表中出现的顺序执行此操作?
例如,如果我这样做:
vector<string> output1;
vector<string> output2;
vector<string> output3;
output1 = my_map["banana"];
output2 = my_map["banana"];
output3 = my_map["banana"];
Run Code Online (Sandbox Code Playgroud)
哪些向量将分配给output1,output2和output3?我很确定它会为所有人提供相同的矢量但是unordered_map如何决定哪一个?我怎样才能使vec1被分配给output1,vec2到output2等?
如果我们有以下代码:
my_struct {
string word;
int num;
}
vector<my_struct> vec1;
//initialize vec1 to 1000 my_struct's
for (int i = 0; i < 1000; i++) {
// in the loop body, is it faster to use vec1[i].word directly, or
//store it in a variable, like so (string temp = vec1[i].word)
//and use the variable to refer temp to instead refer to the word?
}
Run Code Online (Sandbox Code Playgroud)
**编辑:上面假设在循环的每次迭代中必须多次访问该单词的特定索引处的单词
假设我有一系列自定义比较器,如下所示:
template <typename T>
class less_class {
bool operator() (T obj, T value) const {
return obj < value;
}
};
template <typename T>
class greater_than {
bool operator() (T obj, T value) const {
return obj > value;
}
};
template <typename T>
class equal_to {
bool operator() (T obj, T value) const {
return obj == value;
}
};
Run Code Online (Sandbox Code Playgroud)
我有这样的功能:
template <typename T>
bool compare_values(T obj, T value, T comparator(T obj, T value)) {
if comparator(obj, value) return …Run Code Online (Sandbox Code Playgroud) 有没有办法计算STL中remove_if函数的删除次数?
具体来说,我向前传递并返回每个向量的向量迭代器,并将lambda作为第三个参数作为remove_if的比较值,以确定是否应根据向量中的值删除向量.我想知道是否有办法知道之后remove_if删除的向量数量.
另外,作为一个附带问题:我动态地声明这些向量,所以我不确定在这些上调用remove_if是不好的做法.
c++ ×5
cin ×1
comparator ×1
functor ×1
getline ×1
ostream ×1
remove-if ×1
stl ×1
stringstream ×1
templating ×1
vector ×1