小编use*_*825的帖子

具有相同名称和不同模板参数的两个结构如何工作

为什么只有第一个实现工作而不是下面指定的其他实现,有人可以解释这个模板结构的工作方式以及其他人不能工作的原因.

有效的模板结构

template <typename T, typename U>
struct is_same
{
    static const bool value = false;
};

template <typename T>
struct is_same<T, T>
{
   static const bool value = true;
};
Run Code Online (Sandbox Code Playgroud)

模板结构不起作用

template <typename T, typename U>
struct is_same<T, U>
{
   static const bool value = false;
};

template <typename T>
struct is_same<T, T>
{
  static const bool value = true;
};
Run Code Online (Sandbox Code Playgroud)

还有一个不起作用

template <typename T, typename U>
struct is_same<T,U>
{
   static const bool value = false;
};

template <typename …
Run Code Online (Sandbox Code Playgroud)

c++ templates c++11 c++14

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

在C++中将运算符作为参数发送

我有两个变量和一个运算符(可以是+, - ,/,比较......).编写一个带有2个参数和运算符作为参数的函数是一个好主意吗?

功能可能如下所示

T foo(int a,int b, sometype(not sure) operator)
Run Code Online (Sandbox Code Playgroud)

然后从中创建一个字符串

foo(a,b,+);

as  a+b
Run Code Online (Sandbox Code Playgroud)

这是一个好方法还是有其他方法吗?

c++ c++11

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

std :: unordered_map如何处理冲突?

std::unordered_map 保证O(1)时间搜索,但它如何管理碰撞?

Cppreference声称

无序映射是一个关联容器,包含具有唯一键的键值对.元素的搜索,插入和删除具有平均的恒定时间复杂度.

假设所有哈希码都相同的情况,内部如何处理冲突?

如果哈希码对每个键都是唯一的,那么我的假设将完全错误.在这种情况下,如何在没有冲突的情况下创建唯一的哈希码?

std::unordered_map哈希函数采用什么方法来保证O(1)搜索?

c++ unordered-map hashmap c++11

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

在std :: string数组上进行二进制搜索

下面是代码和

std::string str[5] = {"Tejas","Mejas","Rajas","Pojas","Ljas"};
std::sort(str,str+5);
size_t test =  bin_search("Ljas",str,5);
Run Code Online (Sandbox Code Playgroud)

这是二进制搜索的通用函数

 template<class T>
    size_t bin_search(T x,  T* array, int  n)
     {
     size_t begin = 0, end = n;
            // Invariant: This function will eventually return a value in      the range [begin, end]
             while (begin != end) {
                       size_t mid = (begin + end) / 2;
                       if (array[mid] < x) {
                              begin = mid + 1;
                       } else {
                                 end = mid;
                       }
      }
     return begin;   // Or return end, because …
Run Code Online (Sandbox Code Playgroud)

c++ arrays string templates c++11

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

如何使用std :: copy打印用户定义的类型

下面是完全适用于打印类型值的代码 std::string

std::vector<std::string> v;
v.push_back("this");
v.push_back("is");
v.push_back("a");
v.push_back("test");
std::copy(v.begin(),v.end(),std::ostream_iterator<std::string>(std::cout,","));
Run Code Online (Sandbox Code Playgroud)

但是当我尝试打印用户定义的类型(结构)时,代码没有编译:

struct Rec
{
    int name;
    int number;
    int result;
};
int main() 
{
    Rec rec1 = {1,1,1};
    Rec rec2 = {2,1,1};
    Rec rec3 = {3,1,1};
    Rec rec4 = {4,1,1};
    Rec rec5 = {4,1,1};

    std::vector<Rec> v;
    record.push_back(rec1);
    record.push_back(rec2);
    record.push_back(rec3);
    record.push_back(rec4);
    record.push_back(rec5);

    std::copy(v.begin(),v.end(),std::ostream_iterator<Rec>(std::cout,","));

    return 1;
}
Run Code Online (Sandbox Code Playgroud)

我在这里错过了什么?

c++ iterator c++11

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

代码无法选择声明的宏

在下面的代码中,输出值不是宏定义的,是因为这些值必须在预处理器阶段之前可用吗?

#define INT_MAX 100

#include <iostream>

using namespace std;

int main()
{
    int x = INT_MAX;
    x++;
    cout<<x<<INT_MAX;
}
Run Code Online (Sandbox Code Playgroud)

结果是-2147483648

c c++ macros

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

标签 统计

c++ ×6

c++11 ×5

templates ×2

arrays ×1

c ×1

c++14 ×1

hashmap ×1

iterator ×1

macros ×1

string ×1

unordered-map ×1