std::vector<char> v;
v.push_back('a');
v.push_back('b');
v.push_back('c');
v.push_back('d');
v.push_back('e');
v.push_back('f');
char c[3] = { 'z', 'x', 'y' };
// Want to make abzxyf
//v.insert(v.begin() + 2, c, c + 3); // it doesn't work as I wanted.
// Yes it works. but if c is more bigger, it will be crash.
std::copy(c, c + 3, v.begin() + 2);
v.clear();
v.push_back('a');
v.push_back('b');
v.push_back('c');
v.push_back('d');
v.push_back('e');
v.push_back('f');
// If vector needs more memory, I'd let him grow automactically
// So I tried this.(expected abcdezxy)
// But it's result is abcdezxyf. f is still remain.
std::copy(c, c + 3, std::inserter(v, v.begin() + 5));
What algorithm or method should I use?
If the sizeof(c) is bigger, resize() before the copy() that should do the trick.
e.g.
if (sizeof(c) + 2 > v.size())
v.resize(sizeof(c) + 2);
// now copy
std::copy(c, c + sizeof(c), v.begin() + 2);
If you want to do text processing, you might consider using std::string which has replace functions.
std::vector does not. You have to use the appropriate combination of overwriting members combined with insert and erase.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With