Budowa tablicy

0

Cześć, byłby ktoś w stanie nakierować mnie jak napisać taką tablicę w c++?

local table_item = {
[20000] = {17, 35, 41},
}

item = 20000
local pierwszyElement = table_item[item][1] -- zwraca 17
local drugiElement = table_item[item][2] -- zwraca 35
local trzeciElement = table_item[item][3] -- zwraca 41

1

Nie jestem pewien, czy o to w pytaniu chodzi. Tablica ma 2000 elementów, pierwszy 17, później 35 i 41. Potem jest wypełniona zerami

#include <iostream>
using namespace std;
 
int main() {
	unsigned int tab[2000] = {17, 35, 41};
	printf("tab[0]: %u\ntab[1]: %u\ntab[2]: %u\n", tab[0], tab[1], tab[2]);
	return 0;
}
0
hit02 napisał(a):

Nie jestem pewien, czy o to w pytaniu chodzi. Tablica ma 2000 elementów, pierwszy 17, później 35 i 41. Potem jest wypełniona zerami

#include <iostream>
using namespace std;
 
int main() {
	unsigned int tab[2000] = {17, 35, 41};
	printf("tab[0]: %u\ntab[1]: %u\ntab[2]: %u\n", tab[0], tab[1], tab[2]);
	return 0;
}

Jednak nie o to chodziło ale dzięki za odpowiedź tutaj bardziej precyzyjnie

local table_item = {
[20000] = {17, 35, 41},
[20001] = {11, 22, 33},
[20002] = {43, 11, 53},
}

item = 20000 || item = 20001 || item = 20002

Zwracany jest inny element tablicy w zależności jaką wartość ma zmienna item.

Przykładowo jeżeli zmienna item = 20000 to

table_item[item][1] -- zwraca 17

jeżeli zmienna item = 20001 to

table_item[item][1] -- zwraca 11

3
std::unordered_map<int, std::array<int, 3>> tableItem = { {2000, {17, 35, 41}}, 
                                                          {2001, {11,22,33}}, 
                                                          {2002, {43, 11, 53}} };
std::cout << tableItem[2000][0];  // -> 17
std::cout << tableItem[2001][0]; // -> 11
1

local table_item = {
[20000] = {17, 35, 41},
}

To wygląda jak Lua. Przydałoby się o tym napisać, bo nie każdy jest zaznajomiony ze składnią tego języka.

Jeśli chcesz mieć „tablicę” wypełnioną tylko jednym elementem i to o tak dzikim indeksie 20000, to w C++ byłaby to mapa.
C++ jest (bardzo) silnie typowany. Przydałoby się np. wiedzieć, czy te tablice {17, 35, 41} będą zawsze miały 3 elementy, czy jest to zmienny rozmiar?

0
tajny_agent napisał(a):
std::unordered_map<int, std::array<int, 3>> tableItem = { {2000, {17, 35, 41}}, 
                                                          {2001, {11,22,33}}, 
                                                          {2002, {43, 11, 53}} };
std::cout << tableItem[2000][0];  // -> 17
std::cout << tableItem[2001][0]; // -> 11

Super o to mi chodziło z tym, że mam problem przy kompilacji -> 'tableItem' was not declared in this scope
U mnie to wygląda tak: https://i.imgur.com/gVKKEkj.png

0

std::unordered_map jest w #include <unordered_map>

Uprzedzam też, że std::array jest w #include <array>

0
tajny_agent napisał(a):

std::unordered_map jest w #include <unordered_map>

Uprzedzam też, że std::array jest w #include <array>

Tutaj raczej nie chodzi o dołączanie bibliotek bo to już zrobiłem i nadal to samo.

1

Hmm, komunikat błędu który podałeś sugeruje, że ta zmienna po prostu nie jest widoczna w tym miejscu gdzie chcesz jej użyć. Możesz pokazać jakiś kompletny kawałek kodu ?

0

a czemu boost::array i boost::unordered_map ?

1
hit02 napisał(a):

Nie jestem pewien, czy o to w pytaniu chodzi. Tablica ma 2000 elementów, pierwszy 17, później 35 i 41. Potem jest wypełniona zerami

#include <iostream>
using namespace std;
 
int main() {
	unsigned int tab[2000] = {17, 35, 41};
	printf("tab[0]: %u\ntab[1]: %u\ntab[2]: %u\n", tab[0], tab[1], tab[2]);
	return 0;
}

To nie jest C++ tylko C.
To najlepiej podsumowuje co z tym jest nie tak:

1 użytkowników online, w tym zalogowanych: 0, gości: 1