我如何替换std::vector的某些范围的数据
How do I replace data of some range of std::vector
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));
我应该使用什么算法或方法?
如果sizeof(c)
更大,则resize()
在copy()
之前,这应该是可行的
。
if (sizeof(c) + 2 > v.size())
v.resize(sizeof(c) + 2);
// now copy
std::copy(c, c + sizeof(c), v.begin() + 2);
如果要进行文本处理,可以考虑使用具有replace
函数的std::string
。
std::vector
没有。您必须使用覆盖成员与insert
和erase
的适当组合。
相关文章:
- 使用 std::vector<double> 访问由 std::unique_ptr<double[2] 管理的数据>
- 如果变量数据包含大于 vector 所有元素的整数,则仅在视觉工作室上接收"矢量下标超出范围"?
- 在 std::vector<无符号字符中存储任意数据的方法>
- 有效地将数据加载到 std::vector 中<char>
- 将数据从 std::Vector 存储到 Eigen::Vector 时出错
- C++中的多维数据集:从 std::vector 的 2D 数据到 std::vector 的 2D 网格的最干净方法?
- 如何将 std::vector 索引交换到<int>数据,将数据交换到索引
- 如何在 std::vector 中存储来自 std:<short>:vector <uint8_t>的数据
- CLI/C# 将 std::vector<> 结构数据传递给 C#
- 如何在C++中从模板化类访问 std::vector 数据
- pybind11:如何包装以 std::vector<double> 为参数以避免数据复制的 C++ 函数
- 是否可以使用 std::vector<std::any> vec;这将导致异构数据类型
- 比较推送数据(100 万个数字)在 std::vector 中预先调整大小和没有
- 查找索引数据结构,例如`sTD :: vector`(非数组)
- 如何将char数据附加到std :: vector而不会导致副本
- C++:'unique vector'数据结构
- 从类的成员函数访问类的std::vector数据成员
- 存储和恢复std::vector数据
- 一个带有vector数据成员的类
- 通过网络发送和接收<vector>数据