Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
102 views
in Technique[技术] by (71.8m points)

c++ - how to compare two vectors index by index contained by shared_ptr

I have a two shared pointers to vector of strings: b_paras and b_paras_sig

I have traversed the loop for each, using range based for loop as follows:

for ( const std::string &para1 : *b_paras )

and

for ( const std::string &para2 : *b_paras_sig)

Now I want to compare the each element of these vectors, index by index and find out the mismatch.

I think nested loop may not fit as a solution here.

Is there any way to solve this?

Thanks in advance.

question from:https://stackoverflow.com/questions/65939223/how-to-compare-two-vectors-index-by-index-contained-by-shared-ptr

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

There's no elegant way to do that in C++, AFAIK.
Python has a handful zip() function to iterate over multiple sequences at once, and Boost has an equivalent: https://www.boost.org/doc/libs/1_75_0/libs/iterator/doc/zip_iterator.html

Otherwise just make something like

    for(auto it = std::make_pair(a->begin(), b->begin()); 
        it.first != a->end() && it.second != b->end();
        ++it.first, ++it.second) {
            if (*it.first != *it.second) return false;
        }
    }
    return true;


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...