#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;
}
To embed this project on your website, copy the following code and paste it into your website's HTML: