string shopInventory[4][2] = {
{"Boots", "70"},
{"Sword", "150"},
{"Armor", "250"},
{"Shield", "450"}
};
for (int i = 0; i < 4; i++) {
for(int j = 0; j < 2; j++) {
cout << "Multidimensional Array: " << shopInventory[i][NULL] << ": " << shopInventory[NULL][j] << endl;
}
}
我试图建立一个基本的商店系统,但我目前仍然坚持如何输出数据并将细节分开。
预期输出:
靴子:70 剑:150 护甲:250 盾牌:450
实际输出:
多维数组:靴子:靴子 多维数组:靴子:70 多维数组:剑:靴子 多维数组:剑:70 多维数组:护甲:靴子 多维数组:护甲:70 多维数组:盾牌:靴子 多维数组:盾牌:70
还有一种方法可以根据用户想要购买的内容从阵列中删除元素吗?
答案 0 :(得分:1)
你过度复杂了。你的循环应如下所示:
for (int i = 0; i < 4; i++) {
std::cout << "Multidimensional Array: " << shopInventory[i][0] << ": " << shopInventory[i][1] << std::endl;
}
并且不要那样使用NULL
- 如果你想在某个地方放置零,请使用0
答案 1 :(得分:-1)
您可以输出数组,例如以下方式
std::cout << "Multidimensional Array:" << std::endl;
for ( size_t i = 0; i < sizeof( shopInventory ) / sizeof( *shopInventory ); i++ )
{
std::cout << shopInventory[i][0] << ": " << shopInventory[i][1] << std::endl;
}
或者您可以通过以下方式执行此操作
std::cout << "Multidimensional Array:" << std::endl;
for ( const auto &item : shopInventory )
{
std::cout << item[0] << ": " << item[1] << std::endl;
}
考虑到你可以声明一个std::pair<std::string, std::string>
类型的一维对象数组,而不是二维数组。例如
std::pair<std::string, std::string> shopInventory[] =
{
{ "Boots", "70" },
{ "Sword", "150" },
{ "Armor", "250" },
{ "Shield", "450" }
};
std::cout << "Multidimensional Array:" << std::endl;
for ( size_t i = 0; i < sizeof( shopInventory ) / sizeof( *shopInventory ); i++ )
{
std::cout << shopInventory[i].first << ": " << shopInventory[i].second << std::endl;
}
或
std::pair<std::string, std::string> shopInventory[] =
{
{ "Boots", "70" },
{ "Sword", "150" },
{ "Armor", "250" },
{ "Shield", "450" }
};
std::cout << "Multidimensional Array:" << std::endl;
for (const auto &item : shopInventory)
{
std::cout << item.first << ": " << item.second << std::endl;
}
要使用标准类std::pair
,您必须包含标题<utility>
。
对于您的任务,如果您要从序列中删除元素,最好至少使用以下容器而不是数组
std::vector<std::array<std::string, 2>>
这是一个示范程序
#include <iostream>
#include <vector>
#include <string>
#include <array>
int main()
{
std::vector<std::array<std::string, 2>> shopInventory =
{
{ "Boots", "70" },
{ "Sword", "150" },
{ "Armor", "250" },
{ "Shield", "450" }
};
for (const auto &item : shopInventory)
{
std::cout << item[0] << ": " << item[1] << std::endl;
}
return 0;
}
它的输出是
Boots: 70
Sword: 150
Armor: 250
Shield: 450
根据您要对集合执行的操作,请考虑使用关联容器,例如std::map
。