Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 7784793
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: June 1, 20262026-06-01T20:09:06+00:00 2026-06-01T20:09:06+00:00

I have a function that accepts large std::vectors (passed by const & ) and

  • 0

I have a function that accepts large std::vectors (passed by const &) and returns large vectors (by value). In one part of my code, I need to do:

std::list<std::vector<double> > all_vectors;
// all_vectors is filled with values somewhere in here
for (const std::vector & v : all_values)
{
   std::vector<double> res = f(v);
   // do something with res
}

and in another part of my code I need to do:

std::list<std::vector<double> > all_vectors;
// all_vectors is filled with values somewhere in here
for (const std::vector & v : all_values)
{
   std::vector<double> res = f(v);
   // do something different with res
}

The simplest option (memory hog):
It would be trivial to reuse code by simply mapping f over all_values and then going through the results and performing // do something with res or // do something different with res (for each case). The downside of this is that I would (needlessly) need to store a long list of large std::vectors. On one hand, I am as certain as I can be that it won’t use more memory than I have; but even so, it seems like bad practice to store giant amounts of data unnecessarily.

Option 1 (use iterator to generate results as they are requested):
One option would be to create some iterator_map function that behaves like map, but generates the results as they are needed. I think this would be pretty doable with Python’s yield.

Option 2 (use object oriented design):
Another option would be to use ABC inheritance and override a function g: in one derived class, g would perform // do something with res, and in the other, it would perform // do something different with res.

Option 3+ (???):

I’d really like to hear your advice on how you would handle problems like this in C++. Thanks in advance.

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-06-01T20:09:08+00:00Added an answer on June 1, 2026 at 8:09 pm

    Why do you need to return the vector by value? If you can return by reference and use vector<double>::const_iterator, you can be assured you will not modify the original vector.

    If you do need a copy you will most probably need a different copy in both cases, so your option 0 would not work.

    If you are compiling a mash-up collection of values from the vectors in the list, the iterator option sounds the best to me — each time you call operator++, you can dynamically calculate the next element.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I have a function that accepts one parameter and returns a table/resultset. I want
I have a sql function that accepts keywords and returns a full text search
I have a function that accepts a char* as one of its parameters. I
I have a function in C that accepts and returns a double (and uses
We have a function in our Rails code that accepts a JSON POST body:
I have a function that accepts a large array of x,y pairs as an
I have a function that accepts a class (not an instance) and, depending on
I have a function that accepts wildcard keyword parameters: def func(**kargs): doA doB How
I have a function that accepts a generic parameter T that is of type
I have a function that accepts a variable number of parameters: foo (Class... types);

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.