C++
Ambitny: C++
Jak działa tak zadeklarowana zmienna w c++? to jest coś w rodzaju tablicy dwuwymiarowej
z intami?
jak z tego odczytać wartość?
std::vector<std::vector<int>> wartosci;
19 lis 14:20
kat: Zadeklarowanej zmiennej możesz używać w całym programie, nie możesz zmieniać jej wartości.
Przypisujesz jej wartość na początku programu i tyle.
19 lis 18:04
Ambitny: std::vector<std::vector<int>> v1(10,10) ;
może mi ktoś powiedzieć dlaczego to nie działa? chce stworzyć tablice dwuwym. 10 na 10
19 lis 18:10
Ambitny: kat − nie rozumiem co napisałeś, ale pęwnie ma to głębsze dno
można uzyskac dostep do elementu za pomoca operatora [] i zmienic wartosc, to nie stala
19 lis 18:11
Ambitny:
#include <iostream>
#include <string>
#include <vector>
int main()
{
std::vector<std::vector<int>> v1(10,10) ;
v1[0][0] = 11;
cout << v1[0][0];
}
same błędy wyskakują
19 lis 18:13
Ambitny: ||=== Build: Release in wqeqwe (compiler: GNU GCC Compiler) ===|
\Desktop\Nowy folder (3)\wqeqwe\wwda.cpp||In function 'int main()'
Desktop\Nowy folder (3)\wqeqwe\wwda.cpp|9|error: no matching function for call to
'std::vector<std::vector<int> >::vector(int, int)'|
Desktop\Nowy folder (3)\wqeqwe\wwda.cpp|9|note: candidates are
C:\Program Files
(x86)\CodeBlocks\MinGW\lib\gcc\mingw32\4.9.2\include\c++\bits\stl
vector.h|401|note:
template<class
InputIterator, class> std::vector<
Tp,
Alloc>::vector(
InputIterator,
InputIterator, const allocator
type&)|
C:\Program Files
(x86)\CodeBlocks\MinGW\lib\gcc\mingw32\4.9.2\include\c++\bits\stl
vector.h|401|note:
template argument deduction/substitution failed
C:\Program Files
(x86)\CodeBlocks\MinGW\lib\gcc\mingw32\4.9.2\include\c++\bits\stl
vector.h|373|note:
std::vector<
Tp,
Alloc>::vector(std::initializer
list<
Tp>, const allocator
type&) [with
Tp
= std::vector<int>;
Alloc = std::allocator<std::vector<int> >; std::vector<
Tp,
Alloc>::allocator
type = std::allocator<std::vector<int> >]|
C:\Program Files
(x86)\CodeBlocks\MinGW\lib\gcc\mingw32\4.9.2\include\c++\bits\stl
vector.h|373|note: no
known conversion for argument 1 from 'int' to 'std::initializer
list<std::vector<int> >'|
C:\Program Files
(x86)\CodeBlocks\MinGW\lib\gcc\mingw32\4.9.2\include\c++\bits\stl
vector.h|348|note:
std::vector<
Tp,
Alloc>::vector(std::vector<
Tp,
Alloc>&&, const allocator
type&) [with
Tp
= std::vector<int>;
Alloc = std::allocator<std::vector<int> >; std::vector<
Tp,
Alloc>::allocator
type = std::allocator<std::vector<int> >]|
C:\Program Files
(x86)\CodeBlocks\MinGW\lib\gcc\mingw32\4.9.2\include\c++\bits\stl
vector.h|348|note: no
known conversion for argument 1 from 'int' to 'std::vector<std::vector<int> >&&'|
C:\Program Files
(x86)\CodeBlocks\MinGW\lib\gcc\mingw32\4.9.2\include\c++\bits\stl
vector.h|339|note:
std::vector<
Tp,
Alloc>::vector(const std::vector<
Tp,
Alloc>&, const allocator
type&) [with
Tp = std::vector<int>;
Alloc = std::allocator<std::vector<int> >; std::vector<
Tp,
Alloc>::allocator
type = std::allocator<std::vector<int> >]|
C:\Program Files
(x86)\CodeBlocks\MinGW\lib\gcc\mingw32\4.9.2\include\c++\bits\stl
vector.h|339|note: no
known conversion for argument 1 from 'int' to 'const std::vector<std::vector<int> >&'|
C:\Program Files
(x86)\CodeBlocks\MinGW\lib\gcc\mingw32\4.9.2\include\c++\bits\stl
vector.h|335|note:
std::vector<
Tp,
Alloc>::vector(std::vector<
Tp,
Alloc>&&) [with
Tp = std::vector<int>;
Alloc = std::allocator<std::vector<int> >]|
C:\Program Files
(x86)\CodeBlocks\MinGW\lib\gcc\mingw32\4.9.2\include\c++\bits\stl
vector.h|335|note:
candidate expects 1 argument, 2 provided|
C:\Program Files
(x86)\CodeBlocks\MinGW\lib\gcc\mingw32\4.9.2\include\c++\bits\stl
vector.h|318|note:
std::vector<
Tp,
Alloc>::vector(const std::vector<
Tp,
Alloc>&) [with
Tp =
std::vector<int>;
Alloc = std::allocator<std::vector<int> >]|
C:\Program Files
(x86)\CodeBlocks\MinGW\lib\gcc\mingw32\4.9.2\include\c++\bits\stl
vector.h|318|note:
candidate expects 1 argument, 2 provided|
C:\Program Files
(x86)\CodeBlocks\MinGW\lib\gcc\mingw32\4.9.2\include\c++\bits\stl
vector.h|289|note:
std::vector<
Tp,
Alloc>::vector(std::vector<
Tp,
Alloc>::size
type, const value
type&, const
allocator
type&) [with
Tp = std::vector<int>;
Alloc = std::allocator<std::vector<int> >;
std::vector<
Tp,
Alloc>::size
type = unsigned int; std::vector<
Tp,
Alloc>::value
type =
std::vector<int>; std::vector<
Tp,
Alloc>::allocator
type = std::allocator<std::vector<int>
>]|
C:\Program Files
(x86)\CodeBlocks\MinGW\lib\gcc\mingw32\4.9.2\include\c++\bits\stl
vector.h|289|note: no
known conversion for argument 2 from 'int' to 'const value
type& {aka const
std::vector<int>&}'|
C:\Program Files
(x86)\CodeBlocks\MinGW\lib\gcc\mingw32\4.9.2\include\c++\bits\stl
vector.h|277|note:
std::vector<
Tp,
Alloc>::vector(std::vector<
Tp,
Alloc>::size
type, const allocator
type&)
[with
Tp = std::vector<int>;
Alloc = std::allocator<std::vector<int> >; std::vector<
Tp,
Alloc>::size
type = unsigned int; std::vector<
Tp,
Alloc>::allocator
type =
std::allocator<std::vector<int> >]|
C:\Program Files
(x86)\CodeBlocks\MinGW\lib\gcc\mingw32\4.9.2\include\c++\bits\stl
vector.h|277|note: no
known conversion for argument 2 from 'int' to 'const allocator
type& {aka const
std::allocator<std::vector<int> >&}'|
C:\Program Files
(x86)\CodeBlocks\MinGW\lib\gcc\mingw32\4.9.2\include\c++\bits\stl
vector.h|264|note:
std::vector<
Tp,
Alloc>::vector(const allocator
type&) [with
Tp = std::vector<int>;
Alloc =
std::allocator<std::vector<int> >; std::vector<
Tp,
Alloc>::allocator
type =
std::allocator<std::vector<int> >]|
C:\Program Files
(x86)\CodeBlocks\MinGW\lib\gcc\mingw32\4.9.2\include\c++\bits\stl
vector.h|264|note:
candidate expects 1 argument, 2 provided|
C:\Program Files
(x86)\CodeBlocks\MinGW\lib\gcc\mingw32\4.9.2\include\c++\bits\stl
vector.h|253|note:
std::vector<
Tp,
Alloc>::vector() [with
Tp = std::vector<int>;
Alloc =
std::allocator<std::vector<int> >]|
C:\Program Files
(x86)\CodeBlocks\MinGW\lib\gcc\mingw32\4.9.2\include\c++\bits\stl
vector.h|253|note:
candidate expects 0 arguments, 2 provided|
||=== Build failed: 1 error(s), 0 warning(s) (0 minute(s), 0 second(s)) ===|
19 lis 18:14
Metis: Pozbądź się tego * CodeBlocks'a i nie oglądaj Zelenta
jeśli myślisz poważnie o swojej
karierze programisty.
19 lis 18:16
Ambitny: Metis, projektuje procesy biznesowe i zajmuje się PL/SQLem (oracle database) +analizą danych
Niestety zmieniły się warunki zaliczenia na PiO. Niby ugadałem z prowadzącym że projekt ma być
w Javie. Na koniec wywinął mi numer, że musi być to jednak C++, więc muszę chcąc czy nie
przejść szybki kurs programowania w tym języku XD.
A co do codeblocksa − jak najbardziej wystarczy do jednorazowego projektu
19 lis 18:19
Ambitny: std::vector<std::vector<int>> v1; << to już działa, ale jak mam podać rozmiar tablicy
19 lis 18:23
Metis: Pomógłbym ale jestem programistą Python'a / System Adminem
19 lis 18:34
Ambitny: spoko, rozumiem
19 lis 18:35
Mariusz:
Tak tylko czytaj jego bzdury typu zacznij od zera nawet jeśli u ciebie brakuje jednej linijki
kodu
Czy wpis z 18:34 to zwykłe przechwałki ?
Mnie takie bzdury pisał i widzę że u ciebie też nic sensownego nie napisał
Co do Pythona to mogłyby ci przeszkadzać takie rzeczy jak
Jest to język interpretowany
Ma dziwne instrukcje iteracyjne np
nie ma pętli repeat until która czasem może się przydać
pętla for działa raczej jako for each
Tylko pętla while działa w miarę normalnie (tak jak w innych językach)
blok=wcięcie to może być uciążliwe bo co jeśli nie trafisz z wcięciem
Co do Code::Blocksa to zgadza się jest błędnie napisany
Może zamiast tego zainstalować gcc , pisać w notatniku
a kompilować i konsolidować z linii poleceń
Widziałem że Dziadek był dostępny na forum i nic ci nie odpisał
19 lis 19:47
Pytający:
int rows = 10, columns = 10;
std::vector<std::vector<int>> v1(rows,std::vector<int>(columns)) ;
I możesz używać v1[x][y] dla 0≤x≤rows, 0≤y≤columns.
19 lis 20:07
Mariusz:
Jak uruchomiłem w Dev Cpp twój programik to działał
Chciał tylko spacji przy delearacji tego zagnieżdżonego wektora
Ty masz
std::vector<std::vector<int>> v1(10,10) ;
Po wpisaniu spacji
std::vector<std::vector<int> > v1(10,10) ;
i dopisaniu przestrzeni nazw do console outa
skompilował i uruchomił mi twój program
Skoro to jest wektor to powinien dynamicznie alokować pamięć
i kopiować dane
19 lis 20:12
Ambitny: W code block nie chciała mi się uruchomić powyższa linijka, nawet po dodaniu spacji i
przestrzeni nazw.
Zmienie środowisko na DevCpp, skoro u ciebie Mariusz działa , to dobrze.
20 lis 01:34
jc: Możesz usunąć 4 linie i dopisać, gdzie potrzeba std::
#include <iostream>
#include <string>
#include <vector>
using namespace std;
int main(){
vector <vector <int> > v;
vector <int > w;
w.pushback(11);
v.pushback(w);
cout << v[0][0] << endl;
}
20 lis 08:48
sata: Ależ Mariusz jak można tobie pomóc naczelnemu "kopiaczowi" kodu, to sie mija z celem
20 lis 11:22
Mariusz:
O spamer napisał przydałoby się jakoś go zablokować żeby nie zaśmiecał wątków
Ambitny
JC i Dziadek Mróz potrafią pomóc
Kiedyś dałem takie zadanie :
Mamy dane dwa pliki, plik A oraz pik B
i chcemy wypisać linie które występują w pliku A ale nie występują w pliku B
Ja zastosowałbym algorytm naiwny czyli sprawdzanie dla każdej linii pliku A czy nie występuje
ona w pliku B i nawet w językach które posiadają gotowe struktury danych to nawet działało
Gdy chciałem to zapisać w C to dostawałem błąd Segmentation Fault
wtedy Dziadek pomógł mi ten błąd usunąć
Później jc sprowadził to zadanie do sortowania co pozwoliłoby przyspieszyć algorytm
bo ten naiwny którego chciałem użyć był nieco wolniejszy
Trochę dziwne czemu Dziadek ci nie odpowiedział skoro był dostępny na forum po tym
jak zadałeś to pytanie
20 lis 12:02
Mariusz:
Kolejny przykład
Jakiś czas temu Benny dał kod sortowania stogowego
JC podesłał mu wtedy działający kod i Benny mógł sobie porównać kody
Ja wtedy też wykryłem błąd a po wczytaniu się w kod nawet wiedziałem kiedy on wystąpi
Programik wyglądał tak
void Przesiewanie(int l, int p, int A[100])
{
int x,i,j;
x=A[l];
i=l;
j=(2*i)+1;
while(j<=p)
{
if(j<p && A[j]<A[j+1])
j++;
if(x<A[j])
{
A[i]=A[j];
i=j; j=(2*i)+1;
}
}
A[i]=x;
}
void BudujStog(int n, int A[100])
{
for(int i=(n−2)/2;i>=0;i−−)
Przesiewanie(i,n−1,A);
}
void SortowanieStogowe(int n, int A[100])
{
BudujStog(n,A);
int x;
for(int i=n−1;i>=1;i−−)
{
x=A[0];
A[0]=A[i];
A[i]=x;
Przesiewanie(0,i−1,A);
}
}
" i nie oglądaj Zelenta " to niech nakręci kurs o Pythonie wtedy będzemy wiedzieli jak
według niego powinny wyglądać kursy
20 lis 12:38
Dziadek Mróz: >> oraz << są operatorami strumieniowymi, dlatego należy użyć spacji między strzałkami aby
kompilator uznał je za szablon klasy
20 lis 12:41
jc: Dziadku Mrozie, jak sobie z tym poradzić ?
vector <vector <int> > v; // o.k.
vector <vector <int> > v(10,10); // błąd
Jak zapisać, że wstępnie chcemy mieć wektor 10x10?
20 lis 12:59
Dziadek Mróz: Drugi vector zawiera vector a nie int
vector <vector <int> > v(10, vector<int>(4));
20 lis 17:28
Dziadek Mróz: Sorry, zamiast 4 jest 10
20 lis 17:29
jc: Dziękuję
20 lis 20:35
Ambitny: to ja dziękuję
21 lis 02:05
Ambitny: Mariusz, pisałeś kiedyś algorytm MCTS?
21 lis 02:05
Mariusz:
Nie pisałem , piszesz pewnie jakąś grę ?
Wrócę jeszcze do wpisu "i nie oglądaj Zelenta"
Problem w tym że on jako jedyny podjął próbę nakręcenia kursu o C++
Co prawda brakuje u niego kilku tematów ale i tak po polsku nikt nie nakręcił nic lepszego
Gdy jednemu napisałem że u jego "źródeł programowania"
brakuje takich podstawowych tematów jak
1. Ogólna struktura programu , pojęcia takie jak instrukcja czy blok instrukcji
2. Typy zmiennych i zmienne
3. Pisanie po ekranie, czytanie zmiennych z klawiatury
4. Instrukcje warunkowe
5. Instrukcje iteracyjne
6. Własne funkcje czy procedury (tutaj warto też omówić temat zasięgu zmiennych)
7. Rekurencja
8. Wskaźniki lub referencja
9. Statyczna i dynamiczna alokacja pamięci
10. Rekordy (struct w C)
11. Operacje na łańcuchach
12. Czytanie i pisanie do pliku
13. Podstawy programowania grafiki
14. Własne moduły (w C mamy możliwość jedynie podziału kodu na pliki nagłówkowe i źródłowe)
oraz jeśli pogramujemy dla Windows biblioteki łączone dynamicznie
15. Wstęp do programowania obiektowego (ten punkt można by rozbić na podpunkty)
Już Niklaus Wirth zauważył że bez algorytmów i struktur danych wiele programów nie napiszesz
Mamy tutaj takie tematy jak Złożoność obliczeniowa algorytmów np notacja O , Ω, Θ
Sortowanie wewnętrzne i zewnętrzne
(Wewnętrzne gdy dane zmieszczą się w pamięci RAM, sortujemy głównie tablice czasami listy
Zewnętrzne gdy dane nie zmieszczą się w pamięci RAM
i musimy korzystać z pamięci masowej np z dysków magnetycznych, sortujemy głównie pliki)
Wyszukiwanie liniowe i binarne
(Binarne szybsze ale zakłada że ciąg jest posortowany i nie nadaje się do przeszukiwania list)
Algorytmy z nawrotami (Znajdowanie rozwiązania problemu metodą prób i błędów)
Podstawowe struktury danych jak stos, kolejka, listy
Algorytmy geometrii obliczeniowej jak np otoczka wypukła
Algorytmy na łańcuchach jak np wyszukiwanie wzorca
Algorytmy kryptograficzne takie jak np szyfr RSA
Nieco bardziej zaawansowane struktury danych jak drzewa czy grafy
Algorytmy grafowe
Szukanie cykli , najkrótszych dróg, kolorowanie grafu Problem komiwojażera
Algorytmy inne
np problem plecakowy
Jeżeli algorytmów i struktur danych uczymy (się) równolegle do
wstępu do programowania to przydatne mogą być
schematy blokowe oraz pseudokod
Gdy stwierdziłem że u jego "źródeł programowania" brakuje tych tematów
to nazwał mnie "hejterem"
Twierdził że kręci filmiki dla swoich uczniów problem jednak w tym że
u tych jego "źródeł programowania" nie było podstaw
Wpisy tego sata to spam ciekawe czy jakiś program w życiu napisał,
nawet taki łatwy jak narysowanie krzywej
czy chociażby ten mój przykład z plikami
21 lis 08:31
sata: Mariusz nic nie napisał( prócz tego bełkotu wyżej) on całe życie kopiuje cudze programy i
spamuje na forum co widać
21 lis 08:48
Mariusz:
Powtarzasz się dzieciaku
To może ty zapiszesz mu ten algorytm MCTS w C++ ?
Jak dotąd twoje wpisy to spam dzieciaku
Wystarczy kliknąć w nick tego sata aby sprawdzić kto spamuje
Jakub powinien go zablokować aby nie zaśmiecał tematów
Ten spis tematów to tematy wymaganie na zaliczenie wstępu do programowania
oraz algorytmów i struktur danych
Ja od siebie dodałbym sposoby zapisywania algorytmów rekurencyjnych
w sposób iteracyjny
Jeżeli chodzi o kursy które wymagają odbioru bodźców zarówno
wzrokowych jak i słuchowych to po polsku nie znajdziemy nic lepszego
niż ten kurs Zelenta
Gdybyśmy ograniczyli się do materiałów które wymagają odbioru bodźców wzrokowych
to znaleźlibyśmy np stronę Wałaszka czy wyłady Woźnej
Wałaszek nawet nie kryje tego że jego algorytmy nie uwzględniają przypadków brzegowych
ani nie uwzględniają obsługi błędów
Co do Woźnej to np jej lista jednokierunkowa po drobnych poprawkach będzie dobrze działała
ale już lista dwukierunkowa jest już całkiem źle napisana
Jakiś czas temu pytałeś mnie o Dasguptę , otóż widziałem tę książkę
i jakoś nie przypadła mi ona do gustu . Może dlatego jej nie zapamiętałem
Metis chwalił się że pisze w Pythonie
Co do tego Pythona to jeszcze garbage collector mógłby ci przeszkadzać
chociażby dlatego że uczy aby po alokacji pamięci nie zwalniać jej
przez co po przesiadce na inny język mogą wystąpić wycieki pamięci jak się do
tego garbage collectora przyzwyczaimy
21 lis 17:57
Ambitny: Mariusz,
dzięki za listę zagadnień z algorytmów. Część już z nich przerobiłem m.in. stos, kolejki,
drzewa. Co do MCTS − chcę się tego nauczyć, mam zamiar zaimplementować go do gry
Kółko−Krzyżyk. Problem jest taki, że teorię w całości rozumiem ale implementacja taka prosta
nie jest, w każdym razie dla mnie, bo doświadczenia dużego nie mam w tym zakresie. Ostatnio
zrozumiałem i napisałem algorytm MiniMax dla wspomnianej gry.
Z algorytmami masz dużo racji, bez algorytmów niewiele da się zdziałać w programowaniu.
Piszę sporo kodu w Javie, tam też jest garbage collector, ale zacząłem ostatnio w C++, i już
przyzwyczaiłem się do tego aby zwalniać pamięć , bo w Javie tego nie robię.
21 lis 21:51
Ambitny: Ponadto doszedłem do wniosku, że książka Dasgupty jest beznadziejna. Wystarczy ją przejrzeć,
raczej więcej tam algebry niż treści związanej ze strukturami i algorytmami.
21 lis 21:54
Ambitny: @Dziadek
Mróz
"Aby zadeklarować tablicę dwuwymiarową o wymiarze 10 na 10 należy na przykład wpisać:
vector< vector<double> > v1(10,10); "
z tego pdfa się uczyłem
http://www.ee.pw.edu.pl/~ksiezyk/teksty/dydaktyka/InfE/stl-opis.pdf
niestety kod nie chciał się kompilować, chyba tam jest własnie
błąd. Dzięki za wyjąsnienie z tą tablicą wektorów.
21 lis 22:05
jc: Mnie się akurat Dasgupta podoba, ale tak to jest z podręcznikami, jednemu pasuje to,
drugiemu coś innego.
21 lis 22:10