• 0

[MFC] changing size of array at runtime?


Question

9 answers to this question

Recommended Posts

  • 0

I prefer to use STL for things like this when dealing with (personal preference).

example: An array that will hold a bunch of integers would be coded something like this:

#include <vector.h>
#include <iostream.h>
using namespace std; //to make the "No std::"-nazi's happy.

int main(int argc, const char * argv[])
{
 ?bool runLoop = true;
 ?vector myVector<int>;

 ?// First let's add some items to the array
 ?while(runLoop)
 ?{
 ? ?int temp;
 ? ?cout << "Enter a number (-99 quits): " << flush;
 ? ?cin >> temp;
 ? ?myVector.push_back(temp);
 ? ?if (temp == -99) runLoop = false;
 ?}
 ?myVector.pop_back(); ?// this line is needed to erase the "-99" in the last position.
 ?
 ?// lets print out the size of the vector, and then it's contents.
 ?cout << "\n\nThe size of myVector (vector) is: " << myVector.size() << endl << endl<< flush;
 ?for (int i = 0; i < myVector.size(); i++) cout << "element " << i << " is: " myVector[i];
  return 0;
}

Written here so it may not compile exactly as printed but I'm sure you get the idea. Vectors are nice because you can access them like a stanard array (array[index]), you can add/remove items to/from the end with ease, and you can use the STL routines to sort them.

Not as nice as NSMutableArray in Objective-C but it's not too bad either.

  • 0

I've done vector of vectors before, works fine and everything but if you prefer to use c-style memory management you can a)use a resize function (Which i believe is included) b)write your own.

vector< vector<int> > aliens;

//now to give memory to each vector of aliens
//makes something similar to aliens[5][11];
aliens.resize(5);
    for (int n=0;n<5;n++)
        aliens[n].resize(11);

  • 0

thanks, got vectors working now.

but i still cant get it to resize:

i can make it smaller and it works perfectly, however as soon as i try to make it bigger than its orrignal bounds i get a access violation

my code is:

decleration:

std::vector< std::vector<bool> > grid;
	std::vector< std::vector<bool> > newgrid;

resize function:

void Gbg::Resize(int x, int y)
{
	grid.resize(x);
	newgrid.resize(x);	
    for (int i=0;i<x;i++)
	{
  grid[i].resize(y);
  newgrid[i].resize(y);
	}


   for (int j=gx;j<x;j++)
   {
  for (int l = gy; l < y; l++)
  {
 	 grid[j][l] = false;
 	 newgrid[j][l] = false;
  }
   }

	gx = x;
	gy = y;
}

  • 0

try this, its much more elegant anyways. Think of an iterator as a pointer.

this is off top of my head. hope its right. :p

// This resizes it all accordingly

aliens.resize(2000000);
for (vector < vector<CAlien> >::iterator i = aliens.begin(); i <aliens.end(); i++)
{
        i->resize(10000);
}

// This performs an action() on every item in the list

for (vector< vector<CAlien> >::iterator i=aliens.begin(); i < aliens.end(); i++)
{
     for (vector<CAlien>::iterator it = i->begin(); it < i->end(); it++)
     {
               it->action();
     }
}

This topic is now closed to further replies.
  • Recently Browsing   0 members

    • No registered users viewing this page.
  • Posts

    • Missing the Streets of Rage 2 Classic, the link provided its for Streets of Rage Classic both are free
    • Mastodon updates terms of service to ban AI model training on user data by David Uzondu Mastodon has updated its terms of service to explicitly prohibit scraping its platform to train artificial intelligence models. The new rules, which kick in on July 1, make it perfectly clear that using automated tools to slurp up user data from its main server, Mastodon.social, for LLM training is a big no-no. Neowin received a copy of an email sent to users, notifying them of the change, which introduces new language prohibiting the "scraping of user data for unauthorized purposes, e.g., archival or large language model (LLM) training." Here's a snippet from the updated terms of service: This policy change comes at a time when users are getting increasingly ###### off about their public posts becoming free fuel for the AI gold rush. In fact, this is probably good news for the same crowd over on Bluesky that freaked out after a massive, user-traceable dataset of their public posts was compiled and uploaded for AI research. AI bot scraping has become a huge problem for everyone from giants like Reddit, which is now suing Anthropic, makers of Claude, for training on its posts without a license, to even Neowin readers, like Gerowen, who noted how a swarm of bots, including one Claudebot (you don't say!), hammered his personal server with over 700,000 requests in 24 hours, putting a huge strain on his "home NAS running on an old PC tower in the back woods of Kentucky." It is important to remember that Mastodon is a federated network. These new terms apply specifically to the Mastodon.social server, which is operated directly by Mastodon gGmbH. This means that while users on the main instance are now protected, those on other independent servers in the "fediverse" will only get the same protection if their instance administrators adopt similar terms. The company is globally enforcing a new minimum age requirement of 16 for all users, raising it from the previous limit of 13.
    • Keep in mind that updates for it end on Oct 13, 2026. While this may not matter much for those who don't care about features, it might for fixes, and it certainly would for security.
  • Recent Achievements

    • Explorer
      JaviAl went up a rank
      Explorer
    • Reacting Well
      Cole Multipass earned a badge
      Reacting Well
    • Reacting Well
      JLP earned a badge
      Reacting Well
    • Week One Done
      Rhydderch earned a badge
      Week One Done
    • Experienced
      dismuter went up a rank
      Experienced
  • Popular Contributors

    1. 1
      +primortal
      699
    2. 2
      ATLien_0
      275
    3. 3
      Michael Scrip
      219
    4. 4
      +FloatingFatMan
      190
    5. 5
      Steven P.
      146
  • Tell a friend

    Love Neowin? Tell a friend!