草庐IT

c++ - 是否可以在 C++ 中创建原子 vector 或数组?

我有一些代码在每秒激活的线程中使用int数组(int[])。我使用std::mutex中的lock()将这个数组锁定在这个线程中。但是我想知道是否有办法创建一个原子数组(或vector)来避免使用互斥锁?我尝试了几种方法,但编译器总是以某种方式提示?我知道有一种方法可以创建原子数组,但这不一样。 最佳答案 实际上,在CPU级别,有些指令可以自动更新int,一个好的编译器会将这些用于std::atomic.相比之下,没有指令可以自动更新整数vector(对于我知道的任何架构),因此got在某处成为某种互斥体。你不妨让它成为你的互斥体。

c++ - 从 std::vector 中删除原始指针

我有以下模式:我有一个std::vector包含指向对象的原始指针(我知道原始指针是“邪恶的”,但它是需要维护的遗留软件)。现在,我需要对vector中的每个元素进行测试,如果测试结果是肯定的,请对指针执行操作,将其删除,然后将其从vector中移除:伪代码:foreachpointerinvector{if(SomeTest(pointer)){DoSomething(pointer)deletepointerremovepointerfromvector}}我无法为此想出一些不错的干净代码。Thislink提供了不同的方法,但在我看来,它们都或多或少有些麻烦。我现在使用的繁琐方案:

c++ - 从 std::vector 中删除原始指针

我有以下模式:我有一个std::vector包含指向对象的原始指针(我知道原始指针是“邪恶的”,但它是需要维护的遗留软件)。现在,我需要对vector中的每个元素进行测试,如果测试结果是肯定的,请对指针执行操作,将其删除,然后将其从vector中移除:伪代码:foreachpointerinvector{if(SomeTest(pointer)){DoSomething(pointer)deletepointerremovepointerfromvector}}我无法为此想出一些不错的干净代码。Thislink提供了不同的方法,但在我看来,它们都或多或少有些麻烦。我现在使用的繁琐方案:

c++ - 如何在一行中检查 std::vector 中是否存在元素?

这个问题在这里已经有了答案:关闭12年前.PossibleDuplicate:Howtofindaniteminastd::vector?这就是我要找的:#includestd::vectorfoo(){//tocreateandreturnavectorreturnstd::vector();}voidbar(){if(foo().has(123)){//it'snotpossiblenow,buthow?//dosomething}}换句话说,我正在寻找一种简短的语法来验证vector中元素的存在。而且我不想为这个vector引入另一个临时变量。谢谢!

c++ - 如何在一行中检查 std::vector 中是否存在元素?

这个问题在这里已经有了答案:关闭12年前.PossibleDuplicate:Howtofindaniteminastd::vector?这就是我要找的:#includestd::vectorfoo(){//tocreateandreturnavectorreturnstd::vector();}voidbar(){if(foo().has(123)){//it'snotpossiblenow,buthow?//dosomething}}换句话说,我正在寻找一种简短的语法来验证vector中元素的存在。而且我不想为这个vector引入另一个临时变量。谢谢!

c++ - 创建一个新的 C++ 子 vector ?

假设我有一个值为[1,2,3,4,5,6,7,8,9,10]的vector。我想创建一个新的vector,例如,[5,6,7,8]。我想这只是用指针创建一个vector的问题,还是我必须push_back所有我需要的中间值? 最佳答案 std::vector之一的构造函数接受一个范围:std::vectorv;//Populatev.for(inti=1;iv1(v.begin()+4,v.end()-2); 关于c++-创建一个新的C++子vector?,我们在StackOverflo

c++ - 创建一个新的 C++ 子 vector ?

假设我有一个值为[1,2,3,4,5,6,7,8,9,10]的vector。我想创建一个新的vector,例如,[5,6,7,8]。我想这只是用指针创建一个vector的问题,还是我必须push_back所有我需要的中间值? 最佳答案 std::vector之一的构造函数接受一个范围:std::vectorv;//Populatev.for(inti=1;iv1(v.begin()+4,v.end()-2); 关于c++-创建一个新的C++子vector?,我们在StackOverflo

c++ - 多次向 std::vector 添加相同的值(重复)

我想多次向std::vector添加一个值。例如。将整数值1加到vector中五次:std::vectorvec;vec.add(1,5);vec之后应该是{1,1,1,1,1}的形式。有没有一种干净的c++方法可以做到这一点? 最佳答案 这真的取决于你想做什么。制作一个长度为5的vector,用1填充:std::vectorvec(5,1);将vector增加5并用1填充:std::vectorvec;//...vec.insert(vec.end(),5,1);或者调整它的大小(如果你知道初始大小):std::vectorvec

c++ - 多次向 std::vector 添加相同的值(重复)

我想多次向std::vector添加一个值。例如。将整数值1加到vector中五次:std::vectorvec;vec.add(1,5);vec之后应该是{1,1,1,1,1}的形式。有没有一种干净的c++方法可以做到这一点? 最佳答案 这真的取决于你想做什么。制作一个长度为5的vector,用1填充:std::vectorvec(5,1);将vector增加5并用1填充:std::vectorvec;//...vec.insert(vec.end(),5,1);或者调整它的大小(如果你知道初始大小):std::vectorvec

c++ - 二维 vector 的迭代器

如何为二维vector(vector的vector)创建迭代器? 最佳答案 虽然您的问题不是很清楚,但我会假设您的意思是2Dvector表示vector的vector:vector>vvi;那么你需要使用两个迭代器来遍历它,第一个是“行”的迭代器,第二个是那个“行”中“列”的迭代器://assumingyouhavea"2D"vectorvvi(vectorofvectorofint's)vector>::iteratorrow;vector::iteratorcol;for(row=vvi.begin();row!=vvi.end