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));
我应该使用什么算法或方法?
答案 0 :(得分:6)
如果sizeof(c)
更大,resize()
之前copy()
应该做的话。
e.g。
if (sizeof(c) + 2 > v.size())
v.resize(sizeof(c) + 2);
// now copy
std::copy(c, c + sizeof(c), v.begin() + 2);
答案 1 :(得分:3)
如果您想进行文字处理,可以考虑使用具有std::string
功能的replace
。
std::vector
没有。您必须使用覆盖成员与insert
和erase
相结合的适当组合。