Witam,
czy się różni petla taka:
for (int i = 0; i < N; i++) {
for (int j = 0; j < N; j++) {
cin >> tablica[a];
a++;
}
}
od takiej:
for (int i = 0; i < N * N; i++) {
cin >> tablica[a];
a++;
}
Witam,
czy się różni petla taka:
for (int i = 0; i < N; i++) {
for (int j = 0; j < N; j++) {
cin >> tablica[a];
a++;
}
}
od takiej:
for (int i = 0; i < N * N; i++) {
cin >> tablica[a];
a++;
}
Ty nam powiedz
#include <iostream>
using namespace std;
int main() {
#define N 20
int array[N*N];
size_t a = 0;
for(size_t i = 0; i < N*N; ++i)
cin >> array[a++];
return 0;
}
|
#include <iostream>
using namespace std;
int main() {
#define N 20
int array[N*N];
size_t a = 0;
for(size_t i = 0; i < N; ++i)
for(size_t j = 0; j < N; ++j)
cin >> array[a++];
return 0;
}
main:
push rbp
push rbx
sub rsp, 1608
lea rbp, [rsp+1600]
mov rbx, rsp
.L2:
mov rsi, rbx
mov edi, OFFSET FLAT:std::cin
add rbx, 4
call std::basic_istream<char, std::char_traits<char> >::operator>>(int&)
cmp rbx, rbp
jne .L2
add rsp, 1608
xor eax, eax
pop rbx
pop rbp
ret
sub rsp, 8
mov edi, OFFSET FLAT:std::__ioinit
call std::ios_base::Init::Init()
mov edx, OFFSET FLAT:__dso_handle
mov esi, OFFSET FLAT:std::__ioinit
mov edi, OFFSET FLAT:std::ios_base::Init::~Init()
add rsp, 8
jmp __cxa_atexit
|
main:
push r12
push rbp
push rbx
sub rsp, 1600
lea r12, [rsp+1600]
mov rbx, rsp
.L3:
lea rbp, [rbx+80]
.L2:
mov rsi, rbx
mov edi, OFFSET FLAT:std::cin
add rbx, 4
call std::basic_istream<char, std::char_traits<char> >::operator>>(int&)
cmp rbp, rbx
jne .L2
cmp rbp, r12
mov rbx, rbp
jne .L3
add rsp, 1600
xor eax, eax
pop rbx
pop rbp
pop r12
ret
sub rsp, 8
mov edi, OFFSET FLAT:std::__ioinit
call std::ios_base::Init::Init()
mov edx, OFFSET FLAT:__dso_handle
mov esi, OFFSET FLAT:std::__ioinit
mov edi, OFFSET FLAT:std::ios_base::Init::~Init()
add rsp, 8
jmp __cxa_atexit
(x86 gcc 5.2.0 z -O3)
https://www.diffchecker.com/ktyseevk
tym że w drugiej niepotrzebna ta zmienna a
można użyć i
w pierwszym wypadku a można zamienić na i a w drugim a można zamienić na i*N+j
Niikelion napisał(a):
w pierwszym wypadku a można zamienić na i a w drugim a można zamienić na i*N+j
O ile w jednym przypadku zamiana a
na i
przyspieszy program,
o tyle w drugim przypadku zamiana a
na i*N+j
spowolni program.