我知道assertC ++中的用法。想知道有没有之间任何利益差别(我认为assert根据昂贵,如提到的https://www.learncpp.com/cpp-tutorial/7-12a-assert-and-static_assert/明智这样的表现,都同样吗?)在使用gsl_assertover assert吗?为什么要gsl_assert在gsl库中添加代码,因为assertc ++ 已经提供了支持(即使assert来自“ C”,因为我们添加#include<cassert>了assert在C ++中的使用)?
#include <iostream>
#include <gsl/gsl_assert>
using namespace std;
int main()
{
int val;
cin >> val;
Ensures( val > 5 );
return 0;
}
Run Code Online (Sandbox Code Playgroud) 考虑auto var = 5u;.在这里,我使用后缀u,因此var将被推断为unsigned int.有没有办法实现类似的东西uint32_t或uint64_t类型?C++ 11或C++ 14中有后缀吗?
可以使用SSO(小/短字符串优化)std::string.但它是否允许用于其他标准库容器(例如std::vector)?答案取决于容器的模板参数是内置类型还是用户定义类型?
#include <iostream>
#include <vector>
int main()
{
std::vector<bool> bitvec{true, false, true, false, true};
std::string str;
for(size_t i = 0; i < bitvec.size(); ++i)
{
// str += bitvec[i];
std::vector<bool>::reference ref = bitvec[i];
// str += ref;
std::cout << "bitvec[" << i << "] : " << bitvec[i] << '\n';
std::cout << "str[" << i << "] : " << str[i] << '\n';
}
std::cout << "str : " << str << '\n';
}
Run Code Online (Sandbox Code Playgroud)
我们如何从bool值的std :: vector构造一个整数值.我想将它转换为std :: string然后转换为bool值的std :: vector中的整数,但是将其转换为bool值的std …
我需要遍历一个std::list直到end() - 1(所以我不希望在遍历时包含最后一个元素).有效的方法是什么?
#include <iostream>
#include <list>
using namespace std;
int main()
{
list<int> l{1,2,3,4,5};
for(auto itr = l.begin(); itr != l.end() - 1; ++itr)
{
cout << *itr << '\n';
}
}
Run Code Online (Sandbox Code Playgroud) 在运行以下程序时,我遇到了段错误.但如果我评论memset,我不会得到seg错误.无法弄清楚原因.如果我需要清除结构内容(例如值),我们可以做什么而不是memset?
#include <iostream>
#include <cstring>
#include <map>
using namespace std;
struct test
{
int value;
map<int, int> m;
};
void print(test *ptr)
{
cout << "map size() : " << ptr->m.size();
for(auto itr = ptr->m.begin(); itr != ptr->m.end(); ++itr)
{
}
}
int main()
{
test obj;
memset(&obj, 0, sizeof(obj));
print(&obj);
}
Run Code Online (Sandbox Code Playgroud)