小编Luc*_*ton的帖子

对std :: hash <string>的未定义引用

我正在尝试编写一个简单的工厂函数std::unordered_map.该函数接受一个iterable,它有一个beginend方法,并且value_type是a std::pair.以下是我提出的代码.

#include <string>
#include <unordered_map>
#include <cassert>
#include <algorithm>

template <class Iterable>
std::unordered_map<typename Iterable::value_type::first_type,
    typename Iterable::value_type::second_type>
make_unordered_map(Iterable const &iter)
{
    return std::unordered_map<typename Iterable::value_type::first_type,
        typename Iterable::value_type::second_type>(
        iter.begin(), iter.end());
}

int main()
{
    std::unordered_map<std::string, int> map =
        {{"a", 0}, {"b", 1}, {"c", 2}};
    auto result = make_unordered_map(map);
    assert(std::equal(result.begin(), result.end(), map.begin()));
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

但是,我得到一个很长的链接器错误列表,它基本上要求std::hash专门的类std::string.

undefined reference to `std::hash<std::basic_string<char, std::char_traits<char>,
std::allocator<char> > const>::operator()(std::basic_string<char,
std::char_traits<char>, std::allocator<char> >) const'
Run Code Online (Sandbox Code Playgroud)

我正在使用GCC 4.6.1,有 …

c++ c++11

2
推荐指数
1
解决办法
3087
查看次数

c调用同步是否与命令同步相同?

c调用"sync"是否与linux命令"sync"相同?如果不是,他们如何区别?

C/C++代码在基于Linux的系统上运行.

/谢谢

c linux sync

1
推荐指数
1
解决办法
751
查看次数

我可以直接访问std :: array的数据,这是一个缺陷吗?

其中一个后果std::array是其实现定义的数据必须是公共的,否则它将不再是聚合.这允许我做这样的事情:

#include <array>
#include <iostream>

int main()
{
    std::array<int, 5> arr{1, 2, 3, 4, 5};
    #if defined(_LIBCPP_VERSION)
        for (int i : arr.__elems_)
    #else
        for (int i : arr._M_elems)
    #endif
        std::cout << i;
}
Run Code Online (Sandbox Code Playgroud)

考虑到大多数标准库已被很好地封装并防止被滥用,这对我来说似乎相当不利.这有什么解决方法吗?界面std::array可以改进吗?

c++ c++11

0
推荐指数
1
解决办法
84
查看次数

在vector <std :: pair <int,vector <int >>>中搜索

我想在一个内搜索vector<std::pair<int, vector<int> > >.由于矢量参数,这将不起作用:

std::vector<std::pair<int, std::vector<int> > > myVec;
iterator = find(myVec.begin(), myVec.end(), i);
Run Code Online (Sandbox Code Playgroud)

搜索将在第一个std::pair模板参数(int)上,以获取与其关联的向量.

c++

-1
推荐指数
1
解决办法
4587
查看次数

c传递unsigned long long值

一个函数的最后两行怎么样?

printf("disk_free_blocks returning %llu\n",item_int3);
return (item_int3);
Run Code Online (Sandbox Code Playgroud)

出来

disk_free_blocks返回233012428800

返回调用函数为

part_avail=disk_free_blocks(DiskParts[part_index].part_name,DISK_AVAIL);
if (DEBUG) printf("DiskParts[%d].part_name=%s has %llu free.\n",part_index,DiskParts[part_index].part_name,part_avail);
Run Code Online (Sandbox Code Playgroud)

并输出

DiskParts [0] .part_name =/dev/sda1有1084194816免费.

??

unsigned long long part_avail, item_int3;
Run Code Online (Sandbox Code Playgroud)

c

-2
推荐指数
1
解决办法
1037
查看次数

标签 统计

c++ ×3

c ×2

c++11 ×2

linux ×1

sync ×1