#include <iostream>
#include <deque>
#include <sys/uio.h>
#include <cassert>
#include <cstring>

void fill(std::deque<iovec>  &d)
{
    for(uint64_t i=0; i<1024; i++)
    {
        iovec iov { .iov_base = (void *)i, .iov_len=i };
        d.push_back(iov);
    }
}
int main() {
    int len = 1024;
    iovec iovs[len] = {};
    std::deque<iovec> d;
    fill(d);
    assert(d.size()==len);
    std::copy(d.begin(), d.begin() + len, iovs);

    for(uint64_t i=0; i<len; i++)
    {
        assert(iovs[i].iov_base == (void *)i);
        assert(iovs[i].iov_len == i);
        assert(!memcmp(&d[i],&iovs[i],sizeof(iovec)));
        if(i+1==len)
            break;
        if(&d[i+1] != (&d[i])+1)
            std::cout << "d discontinuous at " << (i+1) << std::endl;
        if(&iovs[i+1] != (&iovs[i])+1)
            std::cout << "iovs discontinuous at " << (i+1) << std::endl;
    }
    return 0;
}

Embed on website

To embed this project on your website, copy the following code and paste it into your website's HTML: