Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/159.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;将值更改为数据结构中整型向量的元素_C++ - Fatal编程技术网

C++ C++;将值更改为数据结构中整型向量的元素

C++ C++;将值更改为数据结构中整型向量的元素,c++,C++,我有一个c++中的数据结构: struct Items { string name; // car, bike int quantity; // 1 , 10 }; 我必须修改包含所有数据的指定向量: vector<Items> vectorName; 枚举的概念是在代码中给出整数的字符串表示形式 enum ObjectType { Car, Bike Bus }; 在这种情况下,Car将替换为整数值0;自行车1;2路公共汽车 映射的

我有一个c++中的数据结构:

struct Items
{
    string name;  // car, bike
    int quantity; // 1  , 10
};
我必须修改包含所有数据的指定向量:

vector<Items> vectorName;

枚举的概念是在代码中给出整数的字符串表示形式

enum ObjectType {
    Car,
    Bike
    Bus
};
在这种情况下,Car将替换为整数值0;自行车1;2路公共汽车

映射的概念是允许单个键具有单个值。 因此,将它们结合起来:

std::map<ObjectType, int> myThings;
myThings[Car] += 2;
std::地图神话;
神话[Car]+=2;
这将确保您只有一辆车(从而防止意外重置为0)并删除for循环,因为库已经为您完成了循环us


如果你真的想保留你的向量,那么你就不能每次都简单地添加一个新项;但是,如果旧条目存在,请找到它并对其进行修改。

枚举的概念是在代码中给出整数的字符串表示形式

enum ObjectType {
    Car,
    Bike
    Bus
};
在这种情况下,Car将替换为整数值0;自行车1;2路公共汽车

映射的概念是允许单个键具有单个值。 因此,将它们结合起来:

std::map<ObjectType, int> myThings;
myThings[Car] += 2;
std::地图神话;
神话[Car]+=2;
这将确保您只有一辆车(从而防止意外重置为0)并删除for循环,因为库已经为您完成了循环us


如果你真的想保留你的向量,那么你就不能每次都简单地添加一个新项;但是如果旧条目存在,请找到它并对其进行修改。

考虑重构以

std::map<std::string/*name*/, unsigned/*quantity*/> items;
如果容器中还没有
foo
(std::map的
[]
操作符的奇特之处),则设计绝对精美的
std::map
将自动创建一个适当的条目,并且将值0初始化为0

最后,如果您想输出您的库存,您可以使用

for (const auto& it : items){
    std::cout << "name " << it.first << " quantity " << it.second << '\n';
}
for(const auto&it:items){

std::cout考虑重构到

std::map<std::string/*name*/, unsigned/*quantity*/> items;
如果容器中还没有
foo
(std::map
[]
操作符的奇特之处),则设计绝对精美的
std::map
将自动创建一个适当的条目,并且将值0初始化为0

最后,如果您想输出您的库存,您可以使用

for (const auto& it : items){
    std::cout << "name " << it.first << " quantity " << it.second << '\n';
}
for(const auto&it:items){

std::难道你想在向量中以相同的名称存储多个
对象吗?听起来你真正想要的是枚举到数量的映射。我已经存储了所有项的名称和数量,我只想向项添加数量。它从car=1开始不是真的。循环会更改向量元素。是否复制vector?那么你想在vector中以相同的名称存储多个
对象?听起来你真正想要的是枚举到数量的映射。我已经存储了所有项的名称和数量,我只想向项添加数量。它从car=1开始不是真的。循环会更改向量元素。是否复制v枚举的概念是给出整数的字符串表示形式这是一个非常误导人的描述。这里没有字符串,只有字母数字标识符。它不能打印或像字符串一样使用;它只是一个整数的更友好的表示形式,编译器和编译器都知道这一点。只要您想添加到容器中的内容的数量是已知的,它就可以很好地工作n。如果没有,那么您将进行大量的产品发布。是的,但我需要使用向量进行其他操作,因此必须保留向量,不能使用枚举。“枚举的概念是给出整数的字符串表示形式。”这是一个非常误导人的描述。这里没有字符串,只有字母数字标识符。它不能打印或像字符串一样使用;它只是一个整数的更友好的表示形式,编译器和编译器都知道这一点。只要您想添加到容器中的内容的数量是已知的,它就可以很好地工作n在编译时。如果没有,那么您将进行大量生产发布。是的,但我需要使用我的向量进行其他操作,因此必须保留它,不能使用枚举。不是我的答案,抱歉,我必须使用我的向量。不是我的答案,抱歉,我必须使用我的向量。