#include<iostream>
#include <cstdint>
#include <unordered_map>
enum struct Status {
kOk = 0,
};
struct Student {
std::string name;
std::size_t age;
};
class Table {
public:
Table() {
this->map_.insert(std::make_pair("w1", Student("li", 23)));
this->map_.insert(std::make_pair("s2", Student("zhao", 18)));
}
Status Get(const std::string& key, Student* value) {
*value = this->map_[key];
return Status::kOk;
}
Student Get(const std::string& key) { return this->map_[key]; }
private:
std::unordered_map<std::string, Student> map_;
};
int main(int argc, char* argv[]) {
Table table;
Student stu1;
const Status& status = table.Get("w1", &stu1);
std::cout << stu1.name << ":" << stu1.age << std::endl;
const Student& stu2 = table.Get("s2");
std::cout << stu2.name << ":" << stu2.age << std::endl;
return 0;
}
li:23
zhao:18
1. Status Get(const std::string& key, Student* value);
2. Student Get(const std::string& key);
在 Java/Python 等语言中,个人更喜欢第 2 种写法;但是 C++ 中,一些项目更倾向于第 1 种写法,为啥呢?这样有什么好处吗?
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.