Budowa tablicy

RP
  • Rejestracja:prawie 6 lat
  • Ostatnio:prawie 5 lat
  • Postów:8
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

hit02
  • Rejestracja:ponad 11 lat
  • Ostatnio:ponad 4 lata
  • Lokalizacja:Kernel
  • Postów:90
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

Kopiuj
#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;
}

loop:
push 0FFFFFFFFh
call Sleep
jmp loop
RP
  • Rejestracja:prawie 6 lat
  • Ostatnio:prawie 5 lat
  • Postów:8
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

Kopiuj
#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

tajny_agent
  • Rejestracja:ponad 11 lat
  • Ostatnio:ponad rok
  • Postów:1340
3
Kopiuj
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

"I love C++. It's the best language in the world right now for me to write the code that i need and want to write"
~ Herb Sutter
Azarien
  • Rejestracja:ponad 21 lat
  • Ostatnio:około 13 godzin
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?

RP
  • Rejestracja:prawie 6 lat
  • Ostatnio:prawie 5 lat
  • Postów:8
0
tajny_agent napisał(a):
Kopiuj
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

tajny_agent
  • Rejestracja:ponad 11 lat
  • Ostatnio:ponad rok
  • Postów:1340
0

std::unordered_map jest w #include <unordered_map>

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


"I love C++. It's the best language in the world right now for me to write the code that i need and want to write"
~ Herb Sutter
RP
  • Rejestracja:prawie 6 lat
  • Ostatnio:prawie 5 lat
  • Postów:8
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.

BG
  • Rejestracja:prawie 6 lat
  • Ostatnio:około 14 godzin
  • Postów:289
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 ?

WY
  • Rejestracja:ponad 8 lat
  • Ostatnio:ponad 3 lata
  • Postów:134
0

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

MarekR22
autor pytania, nie potrafi prawidłowo opisywać swoich problemów, więc rozumiem twoje zmieszanie. Jak zauważył Azarien autor najprawdopodobniej tłumaczy kod Lua na C++ i w jednym z postów widać, że potrzebna mu mapa. Nie jest to boost bo te rzeczy są dostępne w standardzie od C++11.
MarekR22
Moderator C/C++
  • Rejestracja:około 17 lat
  • Ostatnio:7 minut
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

Kopiuj
#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:


Jeśli chcesz pomocy, NIE pisz na priva, ale zadaj dobre pytanie na forum.
edytowany 1x, ostatnio: MarekR22

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.