Connecting Tech Pros Worldwide Forums | Help | Site Map

Set boolean array elements to false using STL algorithm?

Jason Heyes
Guest
 
Posts: n/a
#1: Jan 1 '06
What STL algorithm do I use to set all bool elements of an array to false in
just one line of code? Thanks!



Peter_Julian
Guest
 
Posts: n/a
#2: Jan 1 '06

re: Set boolean array elements to false using STL algorithm?



"Jason Heyes" <jasonheyes@optusnet.com.au> wrote in message
news:43b75dd1$0$18200$afc38c87@news.optusnet.com.a u...
| What STL algorithm do I use to set all bool elements of an array to
false in
| just one line of code? Thanks!
|
|

What makes you believe that you need an algorithm to do that?

#include <iostream>
#include <ostream>
#include <vector>

int main()
{
const sz(10);
bool ba[sz] = {false};

std::cout << "bool array with size = " << sz << "\n";
for(int i = 0; i < sz; ++i)
{
std::cout << "ba[" << i << "] = " << ba[i];
std::cout << std::endl;
}

std::vector<bool> vb(10, false);

std::cout << "bool vector with size = " << sz << "\n";
for(int j = 0; j < sz; ++j)
{
std::cout << "ba[" << j << "] = " << ba[j];
std::cout << std::endl;
}

return 0;
}

/*
bool array with size = 10
ba[0] = 0
ba[1] = 0
ba[2] = 0
ba[3] = 0
ba[4] = 0
ba[5] = 0
ba[6] = 0
ba[7] = 0
ba[8] = 0
ba[9] = 0
bool vector with size = 10
ba[0] = 0
ba[1] = 0
ba[2] = 0
ba[3] = 0
ba[4] = 0
ba[5] = 0
ba[6] = 0
ba[7] = 0
ba[8] = 0
ba[9] = 0
*/


Jason Heyes
Guest
 
Posts: n/a
#3: Jan 1 '06

re: Set boolean array elements to false using STL algorithm?


>[color=blue]
> What makes you believe that you need an algorithm to do that?
>[/color]

Here is why.

class Array {
bool arr[10];
public:
Array() { /* initialise arr */ }
};

What do I put in place of the comment if I want to initialise arr in just a
single line of code?


Greg
Guest
 
Posts: n/a
#4: Jan 1 '06

re: Set boolean array elements to false using STL algorithm?


Jason Heyes wrote:[color=blue][color=green]
> >
> > What makes you believe that you need an algorithm to do that?
> >[/color]
>
> Here is why.
>
> class Array {
> bool arr[10];
> public:
> Array() { /* initialise arr */ }
> };
>
> What do I put in place of the comment if I want to initialise arr in just a
> single line of code?[/color]

#include <algorithm>

class Array
{
bool arr[10];
public:
Array()
{
std::fill_n( arr, sizeof(arr)/sizeof(arr[0]), 0);
}
};

Greg

Maxim Yegorushkin
Guest
 
Posts: n/a
#5: Jan 1 '06

re: Set boolean array elements to false using STL algorithm?



Jason Heyes wrote:[color=blue][color=green]
> >
> > What makes you believe that you need an algorithm to do that?
> >[/color]
>
> Here is why.
>
> class Array {
> bool arr[10];
> public:
> Array() { /* initialise arr */ }
> };[/color]

You can default initialize member arrays using the following syntax:

Array() : arr() { ... }

Jason Heyes
Guest
 
Posts: n/a
#6: Jan 2 '06

re: Set boolean array elements to false using STL algorithm?


>[color=blue]
> You can default initialize member arrays using the following syntax:
>
> Array() : arr() { ... }
>[/color]

I tried this in a small program and it did not initialise the array.

#include <iostream>
#include <algorithm>
#include <iterator>

class Array
{
int arr[10];
public:
Array() : arr()
{
std::copy(arr, arr + 10, std::ostream_iterator<int>(std::cout,
"\n"));
}
};

int main()
{
Array array;
return 0;
}

The output of the program was this.

-858993460
-858993460
-858993460
-858993460
-858993460
-858993460
-858993460
-858993460
-858993460
-858993460

Are you sure you can initialise member arrays in the way you have described?

Jason.


romain.gaucher@gmail.com
Guest
 
Posts: n/a
#7: Jan 2 '06

re: Set boolean array elements to false using STL algorithm?


you cannot !
there is no std default contruction of integers, boolean etc.
"arr()" doesn't mean anything here and you have to do a loop

Clark S. Cox III
Guest
 
Posts: n/a
#8: Jan 3 '06

re: Set boolean array elements to false using STL algorithm?


On 2006-01-02 08:47:31 -0500, "romain.gaucher@gmail.com"
<romain.gaucher@gmail.com> said:
[color=blue]
> you cannot !
> there is no std default contruction of integers, boolean etc.
> "arr()" doesn't mean anything here and you have to do a loop[/color]

Are you claiming that the following program can print anything other
than the number zero?

#include <iostream>
using namespace std;

struct Foo
{
int i;
Foo() : i() { cout << i << endl; }
};

int main()
{
Foo foo;
}



--
Clark S. Cox, III
clarkcox3@gmail.com

Maxim Yegorushkin
Guest
 
Posts: n/a
#9: Jan 5 '06

re: Set boolean array elements to false using STL algorithm?



Jason Heyes wrote:[color=blue][color=green]
> >
> > You can default initialize member arrays using the following syntax:
> >
> > Array() : arr() { ... }
> >[/color]
>
> I tried this in a small program and it did not initialise the array.[/color]

It does, refer to the standard §8.5/5.

You are probably using an utterly outdated compiler, such as VC6.
Upgrade to recent one.

Jason Heyes
Guest
 
Posts: n/a
#10: Jan 14 '06

re: Set boolean array elements to false using STL algorithm?


>[color=blue][color=green]
>> you cannot !
>> there is no std default contruction of integers, boolean etc.
>> "arr()" doesn't mean anything here and you have to do a loop[/color]
>
> Are you claiming that the following program can print anything other than
> the number zero?
>
> #include <iostream>
> using namespace std;
>
> struct Foo
> {
> int i;
> Foo() : i() { cout << i << endl; }
> };
>
> int main()
> {
> Foo foo;
> }
>[/color]

There is no default initialisation of integers, boolean, etc, in arrays.


red floyd
Guest
 
Posts: n/a
#11: Jan 15 '06

re: Set boolean array elements to false using STL algorithm?


Jason Heyes wrote:[color=blue][color=green][color=darkred]
>>> you cannot !
>>> there is no std default contruction of integers, boolean etc.
>>> "arr()" doesn't mean anything here and you have to do a loop[/color]
>> Are you claiming that the following program can print anything other than
>> the number zero?
>>
>> #include <iostream>
>> using namespace std;
>>
>> struct Foo
>> {
>> int i;
>> Foo() : i() { cout << i << endl; }
>> };
>>
>> int main()
>> {
>> Foo foo;
>> }
>>[/color]
>
> There is no default initialisation of integers, boolean, etc, in arrays.
>
>[/color]

The above code should print 0. If you look he uses the default
constructor for i.

int x = int();

*Will* initialize x to 0. Unfortunately, I don't have a copy of the
Standard in front of me, so I can't quote chapter and verse.
Maxim Yegorushkin
Guest
 
Posts: n/a
#12: Jan 16 '06

re: Set boolean array elements to false using STL algorithm?



romain.gaucher@gmail.com wrote:[color=blue]
> you cannot !
> there is no std default contruction of integers, boolean etc.
> "arr()" doesn't mean anything here and you have to do a loop[/color]

You are mistaken. Refer to §8.5.

Closed Thread