C ++ - 在'之后的预期主表达式'('令牌'和'''之前缺少模板参数

时间:2016-01-05 19:18:45

标签: c++ dictionary compiler-errors

我定义

newPostsAsyncTask = new NewPostsAsyncTask(MainActivity.this, listView);
newPostsAsyncTask.execute();

然后我尝试以这种方式插入一对:

typedef std::map< int, std::set<int> > SparseMap;
  • col 是整数矩阵坐标
  • sparseBlue声明为pair<SparseMap::iterator,bool> result; result = sparseBlue.insert(SparseMap::value_type(row, set(col)) ); //errors if(result.second) cout << "Inserted" << endl;

为什么我会在我插入的行中得到这些错误?

2 个答案:

答案 0 :(得分:2)

我相信@ T.C和@Lightness Races in Orbit有正确的想法,需要<script> function ClearAll() { $(".k-treeview .k-checkbox input").prop("checked", false).trigger("change"); } </script> 。唯一的问题是std::set<int>没有一个构造函数,它接受一个类型为T的单项(在本例中为int)。

假设您确实需要一个集合作为地图中的值,那么您可能需要以下内容:

std::set<T>

答案 1 :(得分:1)

另一个解决方案是您可以在添加项目之前插入地图:

#include <map>
#include <set>

using namespace std;

int main() 
{
    int row = 0;
    int col = 0;
    std::map<int, set<int>> sparseBlue;

    // insert empty item
    auto iter = sparseBlue.insert(std::make_pair(row, std::set<int>()));

    // did a new item get inserted?
    cout << "The item did " << (iter.second?"":"not") << " get inserted\n";

    // add item to set 
    (*iter.first).  // the map iterator
           second.  // the set
           insert(col); // what we want to do 
}

std::map::insert的返回值返回std::pair,表示插入项的迭代器,truefalse,具体取决于是否插入了新项目。< / p>

Live Example