gpt4 book ai didi

C++ 在我的类中包含 STL 容器的正确方法是什么?

转载 作者:行者123 更新时间:2023-11-30 01:09:27 28 4
gpt4 key购买 nike

首先,我是 C++/OOP 新手。

我想在我的类中包含一个 std::map 并且想知道如何为我类的用户提供映射类型定义和功能。我需要像下面的简单示例那样做吗? (我只展示了一个子集来表明我正在尝试做什么)

对于我包含容器的任何类(即使是 map 方法的子集)我必须这样做是不对的。这似乎也是一个类维护问题(例如,今天可能不需要某些 map 方法,但将来会需要它)

附注除了回答这个问题外,欢迎对以下示例提出任何其他更正/反馈。

#include <map>
#include <string>

class Inventory {

public:
typedef std::string key_type;
typedef std::string mapped_type;
typedef std::map<key_type, mapped_type>::value_type value_type;

Inventory() { }
Inventory(int lotNum) : lotNum_(lotNum) { }

void insert(const value_type& el) { cars_.insert(el); }

//
// TODO: iterators, erase, etc
//

private:
int lotNum_;
std::map<key_type, mapped_type> cars_;

};

int main() {

Inventory ourCars(1);

ourCars.insert( Inventory::value_type( "BMW","ABC123" ) );

return 0;

}

最佳答案

下面是我对这个问题的看法。分别考虑您的类接口(interface)和实现。用户不需要知道你在幕后做了什么——你正在使用什么容器等等。你的类本身应该有一些你通过它的接口(interface)提供的功能。我不确定你的类应该做什么,但如果你想要一个函数来插入两个字符串,你应该只提供该函数。那是你的出发点。然后您决定将字符串存储在 map 或其他任何地方。总之,进入 map 的类型将由您的类接口(interface)决定。您所做的恰恰相反 - 决定如何实现它,然后在界面中公开 map 的类型。

关于C++ 在我的类中包含 STL 容器的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40293229/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com