Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
Другие темы раздела
C++ Ругается на неоднозначный вызов перегруженной функции https://www.cyberforum.ru/ cpp-beginners/ thread1140365.html
Делаю все по примерам не могу понять в чем ошибка. Уверен что ошибка элементарная. Ругается на неоднозначный вызов перегруженной функции. Причем на все функции( #include <iostream> #include <cmath> using namespace std; #define Pi 3.14 int main() { int T; double P; int r,t,Y,R,A; cout<<"T = "; cin>>T;
Удаление элемента списка и всего списка C++
Компилируется, но не работает. Что и как исправить? #include <cstdlib> #include <iostream> #include <cstring> #define M 5 using namespace std; struct A { char key ;
C++ предлоги https://www.cyberforum.ru/ cpp-beginners/ thread1140349.html
помогите пожалуйста! Есть предложение в нем надо подсчитать кол-во предлогов! Как это сделать, и что для этого надо почитать
C++ Запуск подпрограмм Только начал изучать, сильно не пинайте. Запускаю много разных исходников, приходиться каждый раз создавать новый проект, либо все стирать в старом и писать/вставлять новый. Причем IDE не позволяют видеть боьше 1 проекта (Visual2010 & DevCpp) :no: Хочется просто открыть новую вкладку IDE и писать/запускать, не теряя из виду содержимое изначальной вкладки. Пока решил оформлять новые задачи в... https://www.cyberforum.ru/ cpp-beginners/ thread1140310.html
C++ Найти все числа в массиве которые заканчиваются на число 47
Помогите пожалуйста решить задачу: Неоходимо найти все числа в массиве (диапазон случайных чисел от 200 до -200) которые заканчиваются на 47 (как я понял вариантов будет не много. -47 47 -147 147) и вывести эти числа с ихними индексами в массиве. Пример: Число -47 | Ряд 2 | Строка 7 Число 147 | Ряд 4 | Строка 8 Знакомый сказал что можно реализовать это задание следующим способом. От...
C++ Метод перебора Пожалуйста помогите решить задачу за оптимальное время МИНИМАЛЬНОЕ ПОКРЫТИЕ УСЛОВИЕ. Заданы набор С подмножеств конечного множества S, положительное целое число K<=C. ВОПРОС. Верно ли, что С содержит покрытие мощности не более K Иными словами, существует ли такое подмножество C1 из C, что |С1|<=K( и любой элемент из S принадлежит по крайней мере одному подмножеству из С1? Комментарий.... https://www.cyberforum.ru/ cpp-beginners/ thread1140304.html
C++ Некорректный вывод из структуры в файл https://www.cyberforum.ru/ cpp-beginners/ thread1140279.html
Здравствуйте! Нужно вывести в файл фамилию, имя и отчество студента, которые я ранее ввожу русскими буквами. В консоль вывод нормальный, а вот при выводе в файл русских букв выводятся "левые" символы. Код:#include <iostream> using namespace std; #include <fstream> #include <string> #include <iomanip> struct tabl{ char Number; char LastName; char FirstName; char FatherName;
C++ Нарушение прав доступа при записи по адресу
Как исправить ошибку?? Первый этап обработки исключения по адресу 0x0F484AF5 (msvcr110d.dll) в ConsoleApplication16.exe: 0xC0000005: нарушение прав доступа при записи по адресу 0xCDCDCDCD. Необработанное исключение по адресу 0x0F484AF5 (msvcr110d.dll) в ConsoleApplication16.exe: 0xC0000005: нарушение прав доступа при записи по адресу 0xCDCDCDCD. #include <stdio.h> #include <locale.h>...
C++ Найти в массиве максимальное значение среди чисел, не кратных 9 https://www.cyberforum.ru/ cpp-beginners/ thread1140241.html
#include <stdio.h> #define N 3 void main() { int a; int i, j, max; for (i = 0; i<N; i++) scanf("% d", &a); max = 0; j = 0; for(i=0; i<N; i++)
C++ Запись и чтение в тестовый файл Изучить запись и чтение в тестовый файл. Создаете текстовый файл example.txt, содержащий текст "C++ is able to input and output the built - in data types using the stream extraction operator>>and the stream insertiomn operator<<.The stream insertion and stream extraction operators also can be overloaded to perform input and output for user-defined types like an object.". Необходимо заменить в... https://www.cyberforum.ru/ cpp-beginners/ thread1140234.html
Двумерная матрица. Разместить сначала положительные элементы, а за ними - все остальные C++
Помогите пожалуйста написать программу с помощью void f(); В каждой строке матрицы В (4,5) разместить сначала положительные элементы, а за ними - все остальные.
C++ Ввод одномерного массива с клавиатуры https://www.cyberforum.ru/ cpp-beginners/ thread1140213.html
Добрый день! Ребят, надо написать курсовую по С++.Есть задание-ввести одномерный массив с помощью клавиатуры и случайным образом....Пытался написать сам, выдает ошибку..гляньте код пожалуйста #include "stdafx.h" #include <iostream> #include <conio.h> #include <clocale> using namespace std; const int X=10;// опрелеление массива через константу int main () {
18840 / 9839 / 2408
Регистрация: 30.01.2014
Сообщений: 17,280
07.04.2014, 20:31 0

Обнулить элементы вектора через __asm - C++ - Ответ 6012655

07.04.2014, 20:31. Показов 3085. Ответов 24
Метки (Все метки)

Ответ

Цитата Сообщение от mat_for_c Посмотреть сообщение
А что именно знать надо?
В общем случае это значит, что нужно знать как конкретный компилятор на конкретной платформе генерирует код.
Про выравнивание примеры есть по ссылке, много.
PS. Если ты надеешься выиграть в скорости таким образом - я тебя разочарую, вряд ли удастся обогнать компилятор, максимум сравняешься в скорости. Зато код будет непереносим и труден в сопровождении.

Добавлено через 10 минут
mat_for_c, вот, к примеру, я написал такой код для обнуления:
C++
1
2
3
4
5
void fill_raw(vector< vector<int> > & v)
{
    memset(&v[0][0], 0, v[0].size() * sizeof(int));
    memset(&v[1][0], 0, v[1].size() * sizeof(int));
}
из которого получилось вот это:
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
_fill_raw:
    push    edi
    push    ebx
    mov ebx, DWORD PTR [esp+12]
    mov eax, DWORD PTR [ebx]
    mov edx, DWORD PTR [eax]
    mov ecx, DWORD PTR [eax+4]
    sub ecx, edx
    and ecx, -4
    xor eax, eax
    mov edi, edx
    rep stosb
    mov ecx, DWORD PTR [ebx]
    mov edx, DWORD PTR [ecx+12]
    mov ecx, DWORD PTR [ecx+16]
    sub ecx, edx
    and ecx, -4
    mov edi, edx
    rep stosb
    pop ebx
    pop edi
    ret
mingw32 c оптимизацией -02

Добавлено через 24 минуты
Теперь добавим цикл для общего случая:
C++
1
2
3
4
5
6
7
void fill_raw(vector< vector<int> > & v)
{
    for(int i = 0, s = v.size(); i < s; ++i)
    {
        memset(&v[i][0], 0, v[i].size() * sizeof(int));
    }
}
Получаем:
Кликните здесь для просмотра всего текста
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
_fill_raw:
    push    ebp
    push    edi
    push    esi
    push    ebx
    mov esi, DWORD PTR [esp+20]
    mov ecx, DWORD PTR [esi]
    mov eax, DWORD PTR [esi+4]
    sub eax, ecx
    sar eax, 2
    lea edx, [eax+eax*4]
    lea edx, [eax+edx*4]
    lea edx, [eax+edx*4]
    mov ebx, edx
    sal ebx, 8
    add edx, ebx
    mov ebx, edx
    sal ebx, 16
    add edx, ebx
    lea ebp, [eax+edx*2]
    xor edx, edx
    xor eax, eax
    test    ebp, ebp
    jg  L6
    jmp L2
L9:
    mov ecx, DWORD PTR [esi]
L6:
    lea ebx, [edx+edx*2]
    lea ecx, [ecx+ebx*4]
    mov ebx, DWORD PTR [ecx]
    mov ecx, DWORD PTR [ecx+4]
    sub ecx, ebx
    and ecx, -4
    mov edi, ebx
    rep stosb
    inc edx
    cmp edx, ebp
    jne L9
L2:
    pop ebx
    pop esi
    pop edi
    pop ebp
    ret

В принципе можно отталкиваться от приведенных примеров для написания своего (только с учетом компилятора и версии, конечно же) Но на самом деле я привел их для того, чтобы показать, что компилятор не дурак и код будет эффективен, если изначально правильно написан. А главное его можно будет перенести без проблем на другой компилятор.

Вернуться к обсуждению:
Обнулить элементы вектора через __asm C++
1
Заказать работу у эксперта
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.04.2014, 20:31
Готовые ответы и решения:

обнулить каждый 5-ый элемент вектора
Вроде все должно работать, в компиляторе CodeBlocks все работает, а в Visual Studio 2012 выводится...

Дан список, элементы которого являются координатами вектора. Найти длину вектора
1. Дан список, элементы которого являются координатами вектора в n-мерном пространстве. Найти длину...

STL. Функция, которая будет искать элементы большее среднего арифметического вектора и удалять их из вектора
у меня есть вектор, помогите пожалуйста дописать функцию, которая будет искать элементы большее...

Используя алгоритм adjacent_find, обнулить первую пару соседних элементов вектора, имеющих одинаковую чётность
Дан вектор V. Обнулить первую пару соседних элементов, имеющих одинаковую четность. Например,...

24
07.04.2014, 20:31
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.04.2014, 20:31
Помогаю со студенческими работами здесь

Заменить первые два нулевые элементы заданного вектора В на два первых НЕ нулевые элементы этого вектора
Дано вектор В, состоящий из N действительных чисел. Заменить первые два нулевые элементы заданного...

Заменить первых 2 нулевые элементы заданного вектора соответственно на первых 2 не нулевые элементы этого вектора
Заданный вектор Т, который состоит из n действительных чисел. Заменить первых 2 нулевые элементы...

Из вектора С(n) сформировать вектор A, содержащий чётные элементы вектора С и вектор В содержащий нечётные элементы
С++, массив из вектора С(n) сформировать вектор A, содержащий чётные элементы вектора С и вектор В...

Обнулить элементы матрицы
Элементы матрицыT стоящие на пересечение четных строк и четных столбцов обнулить! РЕшите...

0
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru