sumowanie macierzy na wektorach

0

Nie wiem jak zsumować macierze na wektorach możecie mi pomóc?

vector<vector<int>> AsumB(int kolumny, vector<vector<int>> matrix1, vector<vector<int>> matrix2) {
	vector<vector<int>>matrix(kolumny);
	matrix = vector<vector<int>>(matrix1.size());
	for (int i = 0; i < kolumny; ++i)
		for (int j = 0; i <(static_cast<signed int>(matrix1.size())); ++i)
			matrix[i][j] = matrix1[i][j] + matrix2[i][j];

	return matrix;

} 
1
vector < vector < int >> matrix( kolumny );
matrix = vector < vector < int >>( matrix1.size() ); 

Resize vectora matrix nie jest poprawny. Czy argument kolumny jest tylko dla przekazania rozmiaru?
Jeśli tak, to zbędny, ponieważ należałoby skorzystać z rozmiarów istniejącego kontenera.

Pod warunkiem, że oba kontenery (matrix1 oraz matrix2) mają takie same rozmiary:

std::vector < std::vector < int >> matrix( matrix1.size() );
for( std::size_t i = 0; i < matrix.size(); ++i ) {
    matrix[ i ].resize( matrix1[ i ].size() );
} 

Jeśli nie musisz wyznaczyć wartość rozmiaru dłuższego kontenera i tą wartością zmienić rozmiar lub jakoś inaczej zareagować na różnice.

0
carlosmay napisał(a):
vector < vector < int >> matrix( kolumny );
matrix = vector < vector < int >>( matrix1.size() ); 

Resize vectora matrix nie jest poprawny. Czy argument kolumny jest tylko dla przekazania rozmiaru?
Jeśli tak, to zbędny, ponieważ należałoby skorzystać z rozmiarów istniejącego kontenera.

Pod warunkiem, że oba kontenery (matrix1 oraz matrix2) mają takie same rozmiary:

std::vector < std::vector < int >> matrix( matrix1.size() );
for( std::size_t i = 0; i < matrix.size(); ++i ) {
    matrix[ i ].resize( matrix1[ i ].size() );
} 

Jeśli nie musisz wyznaczyć wartość rozmiaru dłuższego kontenera i tą wartością zmienić rozmiar lub jakoś inaczej zareagować na różnice.

macierze matrix1 i matrix2 są takie same ale mają różną liczbę kolumn i wierszy i gdy zapisałeś na początku

 std::vector < std::vector < int >> matrix( matrix1.size() );

to przypisywało to wektorowi matrix liczbę kolumn matrix1? bo mi w takim przypadku to matrix1.size() dawał liczbę wierszy, a nie miałem na myśli tego żeby matrix miał wysokość taką samąjak liczbę wierszy

1
std::vector < std::vector < int >> matrix( matrix1.size() );  // nadajesz rozmiar vectora, vectorów
for( std::size_t i = 0; i < matrix.size(); ++i ) {
    matrix[ i ].resize( matrix1[ i ].size() ); // a tutaj nadajesz rozmiar poszczególnym vectorom
}  

Rozmiary są przepisane, kropka w kropkę. Wiersz w wiersz, kolumna w kolumnę.

a nie miałem na myśli tego żeby matrix miał wysokość taką samąjak liczbę wierszy

ja też nie.
Jeśli twój matrix1 będzie zawierał trzy dziesięcioelementowe wektory,
to wynikiem będzie matrix trzech dziesięcioelementowych wektorów.

Jeśli nadal nie rozumiesz, zerknij w link.
http://melpon.org/wandbox/permlink/M6AuiZwJf0Vz723x

0

Jak znajdziesz chwilkę, to pokombinuj jak używać jednowymiarowych tablic (kontenerów), z napisanym interfejsem dwuwymiarowych.

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