我想用一些数据快速填充这些容器进行测试.有什么最好,最快捷的方法呢?它不应该太复杂,因此也不应该是非人性的,但也不要冗长
编辑
伙计我认为你可以用memset做一些事情,知道vector有一个下划线数组?那么,地图怎么样?
bay*_*yda 12
提升任务库方式(http://www.boost.org/doc/libs/1_38_0/libs/assign/doc/index.html)
using namespace boost :: assign;
std :: vector <int> v;
v + = 1,2,3,4,5,6,7,8,9;
std :: map <std :: string,int> m;
insert(m)("Bar",1)("Foo",2);
vector <int> v;
v + = 1,2,repeat_fun(4,&rand),4;
std :: generate或std :: generate_n
如果您已经拥有初始数据(例如 C 样式数组),请不要忘记这些 STL 容器具有“2 迭代器构造函数”。
const char raw_data[100] = { ... };
std::vector<char> v(raw_data, raw_data + 100);
Run Code Online (Sandbox Code Playgroud)
编辑:我被要求展示地图的示例。通常情况下,您不会拥有一组对的数组,但在过去,我创建了一个 Python 脚本,该脚本可以从原始数据文件生成对的数组。然后我 #include 这个代码生成的结构并用它初始化一个映射,如下所示:
#include <map>
#include <string>
#include <utility>
using namespace std;
typedef map<string, int> MyMap;
// this array may have been generated from a script, for example:
const MyMap::value_type raw_data[2] = {
MyMap::value_type("hello", 42),
MyMap::value_type("world", 88),
};
MyMap my_map(raw_data, raw_data + 2);
Run Code Online (Sandbox Code Playgroud)
或者,如果您有一个键数组和一个数据值数组,您可以循环遍历它们,调用 map.insert(make_pair(key, value));
您还询问了 memset 和 vector。我认为使用 memset 初始化向量没有任何真正的优点,因为可以通过构造函数为向量的所有元素赋予初始值:
vector<int> v2(100, 42); // 100 ints all with the value of 42
vector<string> v(42, "initial value"); // 42 copies of "initial value"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12607 次 |
| 最近记录: |