Jim*_*Jim 8 c++ boost tuples list
我对c ++很新,我真的没有任何背景知识.我想要创建一个元组列表,第一个将是一个int,第二个将是一个字符串.
#include <string>
#include <list>
#include <boost/tuple/tuple.hpp>
....
list< tuple<int,string> > time;
Run Code Online (Sandbox Code Playgroud)
并得到一个错误.我希望能够创建一个列表,添加我可以按int排序的条目,并具有描述int的字符串.
我该如何创建此列表?
Pet*_*McG 12
对于简单的列表使用std::vector而不是std::list.
你可能只想要一些简单的东西,例如:
#include <iostream>
#include <vector>
#include <string>
#include "boost/tuple/tuple.hpp"
using namespace std;
using boost::tuple;
typedef vector< tuple<int,string> > tuple_list;
int main(int arg, char* argv[]) {
tuple_list tl;
tl.push_back( tuple<int, string>(21,"Jim") );
for (tuple_list::const_iterator i = tl.begin(); i != tl.end(); ++i) {
cout << "Age: " << i->get<0>() << endl;
cout << "Name: " << i->get<1>() << endl;
}
}
Run Code Online (Sandbox Code Playgroud)
std::list 实际上是您可能不需要的双向链表的实现.
这里的答案有点过时,并没有告诉你如何对列表进行排序.
从C++ 11开始,您可以使用标准tuple,vector例如:
#include <tuple>
#include <vector>
// ...
vector<tuple<int, string>> data;
Run Code Online (Sandbox Code Playgroud)
要添加条目,您可以使用emplace_back方法vector.这是从标准输入读取的示例:
#include <iostream>
// ...
int age;
string name;
while(cin >> age >> name) data.emplace_back(age, name);
Run Code Online (Sandbox Code Playgroud)
要进行排序,使用标准sort函数就足够了,因为int在我们的例子中,元组的第一个元素是,默认排序顺序将int首先按s 排序元素,然后按strings 排序:
#include <algorithm>
// ...
sort(data.begin(), data.end());
Run Code Online (Sandbox Code Playgroud)
您可以通过索引从元组中检索值:
get<0>(data[i])
Run Code Online (Sandbox Code Playgroud)
或按类型:
get<int>(data[i])
Run Code Online (Sandbox Code Playgroud)
我已经整理了一个完整的例子,你可以在ideone上看到.
| 归档时间: |
|
| 查看次数: |
27401 次 |
| 最近记录: |