按照我下面的写法, cout << (bool)decrptS.insert(1);出编译报错!
#include<queue>
#include<string.h>
#include <set>
using namespace std;
typedef set<int> Set;
int main()
{
Set decrptS;
cout << (bool)decrptS.insert(1);
// cout << decrptS.insert(2);
// cout << decrptS.insert(3);
// cout << decrptS.insert(1);
decrptS.erase(decrptS.begin());
decrptS.erase(decrptS.begin());
decrptS.erase(decrptS.begin());
decrptS.erase(decrptS.begin());
return 0;
}
if(decrptS.insert(1)) 也会报类型转换错误
官文文档显示这个函数有多种类型的返回值,要怎么理解?
PHP中文网2017-04-17 13:12:19
我想題主呼叫的是這個版本的insert:
std::pair<iterator,bool> insert( const value_type& value );
看pair的文檔,它是一個帶著兩個值的泛型容器。
pair
所以,要從pair
cout << decrptS.insert(1).second;
另外順便提一下tuple。
tuple是pair的一般化版本,可以裝下n個值。
std::tuple<int, double, bool, char*> t(1, 3.14, false, NULL);
printf("%f\n", std::get<1>(t)); // 3.140000
std::get<1>(t) = 2.72;
printf("%f\n", std::get<1>(t)); // 2.720000
(話說在這之前,我都不知道原來STL有回傳pair的函數…)
高洛峰2017-04-17 13:12:19
你看手冊, 他的insert回傳了一個pair, first貌似是一個迭代器, 第二個是一個bool, 表示成功與否
http://en.cppreference.com/w/cpp/container/set/insert