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

  • Home
  • SEARCH
  • 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 186901
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 11, 20262026-05-11T15:43:43+00:00 2026-05-11T15:43:43+00:00

Ok, someone tell me which would be better. I need to |= the elements

  • 0

Ok, someone tell me which would be better. I need to |= the elements of one vector with another. That is, I want to

void orTogether(vector<char>& v1, const vector<char>& v2) {     typedef vector<char>::iterator iter;     for (iter i = v1.begin(), iter j = v2.begin() ; i != v1.end(); ++i, ++j)         *i |= *j; } 

I can’t use for_each due to needing to process 2 collections. I suppose I could do something like

struct BitWiseOr {     char operator()(const char& a, const char& b) {return a | b;} };  void orTogether2(vector<char>& v1, const vector<char>& v2) {     transform(v1.begin(), v1.end(), v2.begin(),          v1.begin(), BitwiseOr()); } 

Is this a more efficient solution even though the top one is in place, but the bottom is an assign? This is right in the middle of a processing loop and I need the fastest code possible.

Edit: Added (obvious?) code for BitwiseOr. Also, I’m getting a lot of comments on non-related things like checking the lengths of v2 and changing the names. This is just an example, the real code is more complicated.

Well, I profiled both. orTogether2 is much faster than orTogether, so I’ll be going with the transform method. I was surprised, orTogether2 was about 4 times faster in MSVC9 release mode. I ran it twice, changing the order the second time to make sure it wasn’t some sort of cache issue, but same results. Thanks for the help everyone.

  • 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. 2026-05-11T15:43:43+00:00Added an answer on May 11, 2026 at 3:43 pm

    The bottom one will compile to effectively the same as the first, your OR functor is going to be inlined for sure. So the second idiom is more flexible if you ever need to add more flexibility or debugging frameworks or whatever.

    Since there’s no benefit to the first, use the transform method. Once you get into that habit you’ll stop even considering the explicit loop choice for all your apps since it’s unnecessary. The only advantage to the first method is it’s easier to explain to beginner C++ programmers who are more comfortable with raw C.

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

Sidebar

Related Questions

Could someone please tell me which objects types can be tested using Regular Expressions
Can someone tell me how i can change the .xml file that a flash
Could someone tell me what the units the SetTimeout(int) method in the ICriteria interface
Can someone tell me the different between LinkButton.PostBackUrl and HyperLink.NavigateUrl? I've got a asp.net
Could someone tell me why the SSRS web service ReportService2005.asmx has a recursive parameter
Can someone tell me how to change directories using FtpWebRequest? This seems like it
Could someone tell me how the field Task Group is used in standard SharePoint
Can someone tell what is wrong with this query? sqltext = SELECT utyp, count(*)
Can someone tell me what the code equivelant in VB.Net to this C# code
Can someone tell me what exactly the two above lines of javascript do? And

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.