Login Register






Thread Rating:
  • 0 Vote(s) - 0 Average


I Need Help With This Vector Problem filter_list
Author
Message
RE: I Need Help With This Vector Problem #11
(08-08-2019, 04:47 PM)Drako Wrote:
(08-08-2019, 04:02 AM)phyrrus9 Wrote:
(08-07-2019, 08:02 PM)Drako Wrote: I started doing that a while back when I read that endl was actually inefficient. What I read, and also heard from a lot of people was that it flushes and creates a newline. Which is unnecessary.

You'd be correct on it being inefficient, but the entirety of cout is that way. As for flushing the stream though, that's what std::flush is for.

I had already built the entire program with cout so I didn't want to try and use printf. Printf is a lot faster. As for my problem, any solutions?

which problem was that?

Reply

RE: I Need Help With This Vector Problem #12
(08-09-2019, 07:20 PM)phyrrus9 Wrote:
(08-08-2019, 04:47 PM)Drako Wrote:
(08-08-2019, 04:02 AM)phyrrus9 Wrote: You'd be correct on it being inefficient, but the entirety of cout is that way. As for flushing the stream though, that's what std::flush is for.

I had already built the entire program with cout so I didn't want to try and use printf. Printf is a lot faster. As for my problem, any solutions?

which problem was that?

My reply there. Do you at least have an idea on how I can solve it?

Reply

RE: I Need Help With This Vector Problem #13
(08-09-2019, 10:38 PM)Drako Wrote:
(08-09-2019, 07:20 PM)phyrrus9 Wrote:
(08-08-2019, 04:47 PM)Drako Wrote: I had already built the entire program with cout so I didn't want to try and use printf. Printf is a lot faster. As for my problem, any solutions?

which problem was that?

My reply there. Do you at least have an idea on how I can solve it?

Of using cout instead of printf? If it's not a real problem, I wouldn't worry about it. Going forward, if you can stand your codebase being unclean, use printf for new stuff. I was merely curious why you mixed the two

Reply

RE: I Need Help With This Vector Problem #14
(08-09-2019, 11:04 PM)phyrrus9 Wrote:
(08-09-2019, 10:38 PM)Drako Wrote:
(08-09-2019, 07:20 PM)phyrrus9 Wrote: which problem was that?

My reply there. Do you at least have an idea on how I can solve it?

Of using cout instead of printf? If it's not a real problem, I wouldn't worry about it. Going forward, if you can stand your codebase being unclean, use printf for new stuff. I was merely curious why you mixed the two

I quoted the wrong post...

I meant my code, and not cout and printf.

Code:
std::vector<int> infectChance = {5, 10, 15, 20, 25, 30, 35, 40, 45}; //List of possible infection chances

    std::cout << "  1 > Kin | Location Size: Large | Infection Chance: " << infectChance[0] << "%" << '\n' //Prints everything
                << "  Location Description - Kin is the largest location in the region, you'll" << '\n'
                << "  probably find lots of loot, but just as many bad guys.\n" << '\n'
                << "  2 > Military Outpost | Location Size: Large | Infection Chance: " << infectChance[1] << "%" << '\n'
                << "  Location Description - The government let us down. So does that mean" << '\n'
                << "  you can take their stuff now? Hell yes!\n" << '\n'
                << "  3 > Vernal | Location Size: Medium | Infection Chance: " << infectChance[2] << "%" << '\n'
                << "  Location Description - A pretty under-developed, rundown town." << '\n'
                << "  It's still got stuff though. Maybe.\n" << '\n'
                << "  4 > Mason | Location Size: Medium | Infection Chance: " << infectChance[3] << "%" << '\n'
                << "  Location Description - A better more developed Vernal. Go check it" << '\n'
                << "  out.\n" << '\n'
                << "  5 > Mavren | Location Size: Small | Infection Chance: " << infectChance[4] << "%" << '\n'
                << "  Location Description - OK, lets just make this short and sweet. it's" << '\n'
                << "  trailer park. Don't expect a thing.\n" << '\n'
                << "  6 > Return To Bunker\n" << '\n';

Reply

RE: I Need Help With This Vector Problem #15
(08-09-2019, 11:04 PM)phyrrus9 Wrote:
(08-09-2019, 10:38 PM)Drako Wrote:
(08-09-2019, 07:20 PM)phyrrus9 Wrote: which problem was that?

My reply there. Do you at least have an idea on how I can solve it?

Of using cout instead of printf? If it's not a real problem, I wouldn't worry about it. Going forward, if you can stand your codebase being unclean, use printf for new stuff. I was merely curious why you mixed the two

Code:
std::vector<int> infectChance = {10, 15, 20, 25, 30, 35, 40, 45, 50};
infectChance.reserve(10);

if (shuffled == false)
{
  shuffled = true;

  unsigned seed = std::chrono::system_clock::now()
                               .time_since_epoch()
                               .count();
  shuffle(infectChance.begin(), infectChance.end(), std::default_random_engine(seed));
}

I've changed a lot of the code. What I need to know now is how to save the elements in the vector after they have been shuffled. I need to know this because all of the code you see above is in a 'void' function. So once the 'void' function is called, everything in my vector is reset. Is there a way I can save the elements to memory?

Reply

RE: I Need Help With This Vector Problem #16
(10-14-2019, 07:02 PM)Drako Wrote:
(08-09-2019, 11:04 PM)phyrrus9 Wrote:
(08-09-2019, 10:38 PM)Drako Wrote: My reply there. Do you at least have an idea on how I can solve it?

Of using cout instead of printf? If it's not a real problem, I wouldn't worry about it. Going forward, if you can stand your codebase being unclean, use printf for new stuff. I was merely curious why you mixed the two

Code:
std::vector<int> infectChance = {10, 15, 20, 25, 30, 35, 40, 45, 50};
infectChance.reserve(10);

if (shuffled == false)
{
  shuffled = true;

  unsigned seed = std::chrono::system_clock::now()
                               .time_since_epoch()
                               .count();
  shuffle(infectChance.begin(), infectChance.end(), std::default_random_engine(seed));
}

I've changed a lot of the code. What I need to know now is how to save the elements in the vector after they have been shuffled. I need to know this because all of the code you see above is in a 'void' function. So once the 'void' function is called, everything in my vector is reset. Is there a way I can save the elements to memory?

Pass the vector by reference.

change
Code:
void shuffle(std::iterator begin, std::iterator end, whatever_that_type_was seed);
to
Code:
void shuffle(std::vector<int> &vector, whatever_that_type_was seed);

and then get the begin and end iterators from within the function.

Oh, and of course, change your call to

Code:
shuffle(&infectChance, std::default_random_engine(seed));
(This post was last modified: 10-14-2019, 07:57 PM by phyrrus9.)

Reply

RE: I Need Help With This Vector Problem #17
(10-14-2019, 07:56 PM)phyrrus9 Wrote:
(10-14-2019, 07:02 PM)Drako Wrote:
(08-09-2019, 11:04 PM)phyrrus9 Wrote: Of using cout instead of printf? If it's not a real problem, I wouldn't worry about it. Going forward, if you can stand your codebase being unclean, use printf for new stuff. I was merely curious why you mixed the two

Code:
std::vector<int> infectChance = {10, 15, 20, 25, 30, 35, 40, 45, 50};
infectChance.reserve(10);

if (shuffled == false)
{
  shuffled = true;

  unsigned seed = std::chrono::system_clock::now()
                               .time_since_epoch()
                               .count();
  shuffle(infectChance.begin(), infectChance.end(), std::default_random_engine(seed));
}

I've changed a lot of the code. What I need to know now is how to save the elements in the vector after they have been shuffled. I need to know this because all of the code you see above is in a 'void' function. So once the 'void' function is called, everything in my vector is reset. Is there a way I can save the elements to memory?

Pass the vector by reference.

change
Code:
void shuffle(std::iterator begin, std::iterator end, whatever_that_type_was seed);
to
Code:
void shuffle(std::vector<int> &vector, whatever_that_type_was seed);

and then get the begin and end iterators from within the function.

Oh, and of course, change your call to

Code:
shuffle(&infectChance, std::default_random_engine(seed));

I feel genuinely stupid. I fixed my problem based a bit off of your answer. All I needed to do was declare the 'infectChance' vector outside of my void function. I guess I was trying to over complicate things. Thanks for your reply! I've been trying to fix this for about a month.

Reply

RE: I Need Help With This Vector Problem #18
(10-15-2019, 04:47 AM)Drako Wrote:
(10-14-2019, 07:56 PM)phyrrus9 Wrote:
(10-14-2019, 07:02 PM)Drako Wrote:
Code:
std::vector<int> infectChance = {10, 15, 20, 25, 30, 35, 40, 45, 50};
infectChance.reserve(10);

if (shuffled == false)
{
  shuffled = true;

  unsigned seed = std::chrono::system_clock::now()
                               .time_since_epoch()
                               .count();
  shuffle(infectChance.begin(), infectChance.end(), std::default_random_engine(seed));
}

I've changed a lot of the code. What I need to know now is how to save the elements in the vector after they have been shuffled. I need to know this because all of the code you see above is in a 'void' function. So once the 'void' function is called, everything in my vector is reset. Is there a way I can save the elements to memory?

Pass the vector by reference.

change
Code:
void shuffle(std::iterator begin, std::iterator end, whatever_that_type_was seed);
to
Code:
void shuffle(std::vector<int> &vector, whatever_that_type_was seed);

and then get the begin and end iterators from within the function.

Oh, and of course, change your call to

Code:
shuffle(&infectChance, std::default_random_engine(seed));

I feel genuinely stupid. I fixed my problem based a bit off of your answer. All I needed to do was declare the 'infectChance' vector outside of my void function. I guess I was trying to over complicate things. Thanks for your reply! I've been trying to fix this for about a month.

No.....you didn't fix your problem, you made it worse. You shouldn't have any global variables. Pass them back and forth between your functions, this isn't Python.

Reply







Users browsing this thread: 2 Guest(s)