I want to set a default nonzero value for all elements of a table or 2d array. array[size]={12} sets first elements only 12 and others are all 0 in a row.But fill(array,array+size,12) sets all elements to 12 in a row only.I could't apply this for 2d array.Is there any way to do this using fill() or any way without direct initialization using double for loop
#include <iostream>
#include<algorithm>
#include<vector>
#include<stdlib.h>
using namespace std;
int main()
{
int arra[10][10];//declare 2d array
for(int k=0;k<10;k++)//takes k's value 10 for 10 rows
fill(arra,arra+10,45);//select a row and set all columns to 45 didn't work
}
array initialization http://www.fredosaurus.com/notes-cpp/arrayptr/array-initialization.html
For C arrays, you'll probably want to use memset
. You've marked this as C++, though, so I feel obliged to give a C++ answer:
std::vector<std::vector<int>> v(10, std::vector<int>(10, 45));
This creates a std::vector
of 10 std::vector<int>
s of size 10 with each element initialized to 45.
See here for the ideone.
Almost the same way as you would with a 1-dimensional array:
#include <iostream>
#include <iomanip>
int main() {
int arr[10][10] = {
{ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 },
{ 2, 4, 6, 8, 10, 12, 14, 16, 18, 20 },
{ 3, 6, 9, 12, 15, 18, 21, 24, 27, 30 },
{ 4, 8, 12, 16, 20, 24, 28, 32, 36, 40 },
{ 5, 10, 15, 20, 25, 30, 35, 40, 45, 50 },
{ 6, 12, 18, 24, 30, 36, 42, 48, 54, 60 },
{ 7, 14, 21, 28, 35, 42, 49, 56, 63, 70 },
{ 8, 16, 24, 32, 40, 48, 56, 64, 72, 80 },
{ 9, 18, 27, 36, 45, 54, 63, 72, 81, 90 },
{ 10, 20, 30, 40, 50, 60, 70, 80, 90, 100 }
};
for(int i=0; i<10; ++i) {
for(int j=0; j<10; ++j) {
std::cout << std::setw(4) << arr[i][j];
}
std::cout << '\n';
}
}
NOTE: The first index does not require a value. In that case the compiler will automatically calculate this index.
int arr[][10] = { ... };
EDIT
An alternative that will avoid a double loop is:
## Heading ###include <iostream>
#include <iomanip>
int main() {
int arr[10][10] = {}; // Initializes all values to 0
for(int i=0; i<10; ++i ) arr[i][0] = 12;
for(int i=0; i<10; ++i) {
for(int j=0; j<10; ++j) {
std::cout << std::setw(4) << arr[i][j];
}
std::cout << '\n';
}
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With